2012-01-06 54 views
1

我通過Rails 3的一些基本教程進行了工作。目標是一個關於能力和活動的社區網站。我正在使用Devise進行身份驗證。用化身創建用戶配置文件效果很好(謝謝回形針)。Rails 3:發送用戶配置文件的聯繫表格

作爲下一步,我希望允許註冊用戶通過他(或她)的個人檔案頁面向用戶發送電子郵件。我發現了一個偉大的教程創建使用谷歌Apps的聯繫表格: http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/

本教程中的郵件類的樣子:

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 .dev與接收器的電子郵件地址? (來自用戶模型)

在此先感謝!

回答

1

您可以修改new_message以接受要向其發送電子郵件的用戶(或用戶列表)。或者如果你想要的話,可以使用一組電子郵件地址然後將接收者的電子郵件地址作爲:to選項傳遞給mail方法。

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

然後,你可以調用你的郵件這樣

NotificationEmail.new_message(a_user, a_message).deliver 

要閱讀API看到herehere(我喜歡APIdock)。

另外關於ActionMailer的更全面的指南可用here。如果你是Rails的新手,你可以找到更多的指南here

+0

它工作的很好,謝謝!爲了通知控制器應向哪個用戶發送消息,我在消息表單中添加了一個隱藏字段。像:<%= form.hidden_​​field:user_id,:value => @ user.id%> – 2012-01-08 20:35:50

+0

@ user1133942太棒了!我對您的應用程序的特性瞭解不多,請注意,惡意用戶可以更改隱藏字段的值,然後可以將消息發送給其他人。所以,如果這是不可接受的,你應該防止它發生。 – Behrang 2012-01-08 21:43:50

+0

我正在使用CanCan限制用戶權限,並且只允許登錄成員發送電子郵件,因此如果當前用戶沒有必要的權限,消息控制器將阻止發送。但我想,我必須處理Rails一段時間才能看到所有潛在的威脅。感謝提示! :-) – 2012-01-09 12:02:28