2012-01-06 10 views
1

私はRails 3に関するいくつかの基本的なチュートリアルを行いました。目標は能力と活動に関するコミュニティのウェブサイトです。私はDeviseを認証に使用しています。アバターを使ったユーザープロファイルの作成はうまくいきました(ペーパークリップのおかげで)。Rails 3:ユーザープロフィールからメッセージを送信するための連絡フォーム

次のステップとして、登録ユーザーがに彼または彼女のプロフィールページから電子メールを送信できるようにします。私は、Google Appsのを使用して連絡先フォームの作成に多大なチュートリアルが見つかりました:

class NotificationsMailer < ActionMailer::Base 

    default :from => "[email protected]" 
    default :to => "[email protected]" 

    def new_message(message) 
    @message = message 
    mail(:subject => "[YourWebsite.tld] #{message.subject}") 
    end 

end 

私の質問:への最善の方法はあなたに取って代わるとは何ですか@ youremail http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/

をこのチュートリアルでメーラークラスがどのように見えます.devと受信者の電子メールアドレスは? (ユーザーモデルから)

ありがとうございます!

答えて

1

new_messageを変更して、電子メールを送信するユーザー(またはユーザーの一覧)を受け入れることができます。または、必要に応じて電子メールアドレスの配列。その後、受信者の電子メールアドレスをmailメソッドに:toオプションとして渡します。

def new_message(receiver, message) 
    @message = message 
    mail(:subject => "[YourWebsite.tld] #{message.subject}", 
     :to => receiver.email_address) # or something similar 
end 

次に、あなたはhereまたはhere(私はAPIdockを好む)参照APIを読み取るには、この

NotificationEmail.new_message(a_user, a_message).deliver 

のようなあなたのメーラーを起動することができます。

また、ActionMailerについてのより包括的なガイドはhereです。 Railsを初めてお使いの方は、hereのガイドをご覧ください。

+0

素晴らしいです、ありがとう!コントローラにどのユーザにメッセージを送るべきかを知らせるために、メッセージフォームに隠しフィールドを追加しました。次のようになります。<%= form.hidden_​​field:user_id、:value => @ user.id%> –

+0

@ user1133942素晴らしい!あなたのアプリの特殊性についてはあまりよく分かりませんが、悪意のあるユーザーが隠しフィールドの価値を変更してから、他の誰かにメッセージを送信できることに注意してください。したがって、これが許容できない場合は、それが起こらないようにする必要があります。 – Behrang

+0

私はCanCanを使用してユーザーの権利を制限しており、ログインしているメンバーだけが電子メールを送信できるようにするため、現在のユーザーに必要な権限がない場合、メッセージコントローラは送信を禁止します。しかし、私は、すべての潜在的な脅威を見るためにしばらくの間、Railsに対処しなければならないと思います。ヒントありがとう! :-) –

関連する問題