我一直在努力想办法完成这个功能。
目前,我有一位拥有个人资料的用户。还有一个通用的联系表单模型,它是无表格的,不会将任何内容保存到数据库中。
我的目标是建立一个常规联系表单,我可以在其中链接单个用户个人资料上的联系人按钮。提交时的联系表单将发送到配置文件属性中指定的用户电子邮件。例如,配置文件有一个字段t.string contact_email。
目前我已设置联系人模型,可以将其发送到一封电子邮件。主要是应用程序所有者。
class ContactMailer < ApplicationMailer
default :to => "stephen@example.com"
def contact_me(msg)
@msg = msg
mail from: @msg.email, subject: @msg.subject, body: @msg.content
end
end
我的目标是简单地链接
default :to => "stephen@example.com"
类似
default :to => "@profile.contact_email"
我不知道如何为表单指定用户或者是否可能。该过程必须包括一旦访问者点击联系我们,表单将收集个人资料电子邮件并将其用作收件人。
很抱歉,如果这似乎没有任何表格来回答我只是在寻找可能从哪里开始或如何完成的提示。
答案 0 :(得分:0)
注意:不要涉及到默认情况下必须指定to
的事情。您只需在to
方法中发送mail
,就像发送from
,subject
和其他变量一样。
有几种方法可以做到:
1)您可以使用hidden_field_tag
传递该用户的电子邮件,如下所示
<%= hidden_field_tag :contact_email, @user.contact_email %>
然后在服务器端,您可以通过parmas[:contact_email]
获得其值。
2)您可以在致电contact_me
时发送用户的电子邮件。现在,您只发送一个参数msg
。所以,
def contact_me(msg, to)
@msg = msg
mail to: to, from: @msg.email, subject: @msg.subject, body: @msg.content
end
当你致电contact_me
时,你可以这样做:ContactMailer.contact_me(msg, @user.contact_email)
虽然它可能会有所不同,具体取决于代码中的实际实现,但概念总是相同的。