【问题标题】:Contact Form for User Profile用户资料联系表
【发布时间】:2016-04-18 10:02:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails email mail-form


    【解决方案1】:

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

    有几种方法可以做到:

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

    【讨论】:

    • 感谢您的快速回复。我对你的回答有点困惑,所以基本上你说将 params{:contact_email} 添加到无表模型的控制器?我明白你在最后所说的话,但我对你如何实现任何机会感到困惑。有什么方法可以再举一个小例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多