我正在尝试创建一个表单,使用户能够将电子邮件发送给其他用户。当用户单击“ link_to”电子邮件时,他们将被发送到联系表,他们可以在此相互联系。一切正常,除非我不知道如何在user_mailer.rb中动态设置“默认为”。
我希望用户能够将其发送到他们单击的任何电子邮件链接。那么,如何使方法默认为动态方法呢?
user.html.erb
<% if user.email.present? %>
<b>Email:</b>
<%= link_to "email", contact_path %>
<% end %>
user_mailer.rb
class UserMailer < ActionMailer::Base
default to: #user email
def contact_email(name, email, body)
@name = name
@email = email
@body = body
mail(from: email, subject: '')
end
end
contact.html.erb
<div class="container-content">
<div class="container">
<%= form_tag(send_mail_path) do %>
<div class="form-group">
<%= label_tag 'name', 'Name' %>
<%= text_field_tag 'name', nil, class: 'form-control', placeholder: 'Your Name' %>
</div>
<div class="form-group">
<%= label_tag 'email', 'Email' %>
<%= email_field_tag 'email', nil, class: 'form-control', placeholder: 'Your Email Address' %>
</div>
<div class="form-group">
<%= label_tag 'comments', 'Comments' %>
<%= text_area_tag 'comments', nil, class: 'form-control', rows: 4, placeholder: 'Comments...' %>
</div>
<%= submit_tag nil, class: 'btn btn-default btn-about pull-right' %>
<% end %>
</div>
</div>
user_controller.rb
def send_mail
name = params[:name]
email = params[:email]
body = params[:comments]
UserMailer.contact_email(name, email, body).deliver_now
redirect_to contact_path, notice: 'Message sent'
end
default to:
当收件者电子邮件针对不同用户更改时(即它们是动态的),我看不到一种设置值的方法。如果我没记错的话,它的值default to:
应该是静态的。
我希望用户能够将其发送到他们单击的任何电子邮件链接
而是将您的代码更改为下面
<% if user.email.present? %>
<b>Email:</b>
<%= link_to "email", contact_path(to_email: user.email) %> #pass an extra parameter
<% end %>
然后在中form
,创建一个如下所示的隐藏字段
<%= hidden_field_tag 'to_email', params[:to_email] %>
因此,现在您可以像params[:to_email]
在控制器操作中一样对其进行访问。
def send_mail
name = params[:name]
email = params[:email]
body = params[:comments]
to_email = params[:to_email]
#pass to_email as argument to this method
UserMailer.contact_email(name, email, body, to_email).deliver_now
redirect_to contact_path, notice: 'Message sent'
end
最后,邮递员方法将如下所示
class UserMailer < ActionMailer::Base
def contact_email(name, email, body, to_email)
@name = name
@email = email
@body = body
mail(from: email, subject: '', to: to_email)
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句