2016-04-18 7 views
0

私はこの機能を完了する方法を考えるのに苦労しています。ユーザープロフィールのためのお問い合わせ

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

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

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

class ContactMailer < ApplicationMailer 

     default :to => "[email protected]" 

     def contact_me(msg) 
     @msg = msg 

     mail from: @msg.email, subject: @msg.subject, body: @msg.content 
    end 
    end 

私の目標は、私は、フォームまたはその可能な場合は、ユーザーを指定する方法が分からない

  default :to => "@profile.contact_email" 

のようなものに

 default :to => "[email protected]" 

を簡単にリンクすることです。このプロセスでは、訪問者ヒットが連絡を取った後、フォームがプロフィールメールを受け取り、それを受信者として使用するようにする必要があります。

申し訳ありません私はテーブルに何も答えていないように見えますが、私はちょうどどこから始めたいのか、それをどうやってできるかについてのヒントを探しています。

答えて

0

注:デフォルトでは、toを指定する必要はありません。 fromsubjectなどの変数を送信するのと同じように、mailメソッドにtoを送信するだけで済みます。

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

1)あなたは

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

を以下のように、そのユーザーの電子メールに沿って通過するhidden_field_tagを使用することができますし、サーバー側で、あなたはその値を持つことができます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)それはあなたのコード内の実際の実装によって異なるかもしれないが、しかし概念は常に同じになります。

+0

ご返信ありがとうございます。私は、テーブルレスモデルのコントローラにparams {:contact_email}を追加するという基本的な答えをあなたの答えに混同していますか?私はあなたが最後に向かって何を言っているのか見ていますが、あなたができるチャンスをどのように実装しているのか混乱しています。あなたはもう少し小さな素早い例を与えることができますか? – leafshinobi25

関連する問題