0

この機能を完成させる方法を考えるのに苦労しました。

現在、プロファイルを持つユーザーがいます。また、テーブルがなく、データベースに何も保存しない一般的な Contact フォーム モデル。

私の目標は、個々のユーザー プロファイルの連絡先ボタンをリンクできる一般的な連絡先フォームを作成することです。送信された連絡フォームは、プロファイル属性で指定されたユーザーの電子メールに送信されます。たとえば、プロファイルにはフィールド t.string contact_email があります。

現在、1 つの個別の電子メールに送信できる連絡先モデルをセットアップしています。主にアプリの所有者。

   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注:デフォルトで指定しなければならないことには触れないでください。メソッドやその他の変数を送信するのと同じように、メソッドをto送信するだけです。mailfromsubject

それにはいくつかの方法があります。

1)hidden_field_tag次のように、そのユーザーのメールを渡すために使用できます

<%= hidden_field_tag :contact_email, @user.contact_email %>

そして、サーバー側では、 を通じてその値を取得できますparmas[:contact_email]

2) 通話ができるときにユーザーのメールを送信できますcontact_me。現在、1 つのパラメーターのみを送信しています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 に答える