0

我一直在努力想一种方法来完成这个功能。

目前我有一个有个人资料的用户。还有一个通用的联系表单模型,它是无表的,不会将任何内容保存到数据库中。

我的目标是有一个通用的联系表格,我可以在其中链接个人用户个人资料上的联系按钮。提交时的联系表单将发送到配置文件属性中指定的用户电子邮件。例如,配置文件有一个字段 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"

我不知道如何为表单指定用户或是否可能。该过程必须包括一旦访问者点击联系我们,表单将获取个人资料电子邮件并将其用作收件人。

抱歉,如果这看起来我没有什么可以回答的问题,我只是在寻找关于从哪里开始或如何完成的提示。

4

1 回答 1

0

注意:不要进入to默认情况下必须指定的内容。您可以像发送一样简单地发送方法tomail其他变量。fromsubject

有几种方法可以做到:

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)虽然它可能会根据你的代码中的实际实现而有所不同,但概念总是相同的。

于 2016-04-18T10:12:24.973 回答