[英]Ruby on Rails: Observers and flash[:notice] messages?
我正在嘗試向用戶發送即時消息和歡迎通知,如果這是他們第一次發表評論; 基本上是這樣的:
class CommentObserver < ActiveRecord::Observer
def after_save(comment)
if comment.user.new?
Mailer.deliver_welcome_package(comment)
flash[:notice] = "Welcome! We just delivered a welcome package to your email"
end
end
end
我不確定用戶創建第一個評論后應如何向用戶顯示該即顯消息。 我應該將該Flash消息放入控制器中(是否帶有附加的“ if comment.user.new?”),還是可以更有效地顯示Flash消息?
對我來說,將Flash消息放入方法中似乎不錯。
我的application_helper文件中通常有一個輔助方法,用於檢查Flash和diplay。
def show_flash
[:notice, :error, :warning].collect do |key|
content_tag(:div, flash[key], :id => key, :class => "flash flash_#{key}") unless flash[key].blank?
end.join
end
我有三種消息,注意,警告和錯誤,它們檢查是否設置了任何消息,如果設置了,則將其打印出來,如果未設置,則不打印任何內容。
在我的布局中,然后有..
<% show_flash %>
首先,為什么要觀察評論? 如果您想對新用戶做出反應,為什么不觀察用戶?
要回答您的問題,我肯定會將閃存分配放在您的控制器中,原因是閃存是視圖級別的關注點。
我曾經使用觀察者來發送郵件,但最近只是在控制器中發送了它們。 在這種情況下,這樣做會使您的生活更加簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.