2010-01-04 62 views
3

我試圖發送Flash消息並歡迎用戶注意,如果這是他們的第一次評論;基本上是這樣的:Ruby on Rails:觀察者和flash [:notice]消息?

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 

我不知道我應該如何對用戶顯示的那一剎那消息他們創造他們的第一個評論之後。我是否應該在控制器中添加該閃光消息(附加「if comment.user.new?」)還是有更高效地顯示閃光消息的方法?

回答

5

將閃光消息放在方法中對我來說似乎很好。

我通常在我的application_helper文件中有一個輔助方法來檢查flash和diplays。

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 %> 
2

首先,你爲什麼要觀察評論?如果你想對新用戶做出反應,你爲什麼不觀察用戶?

要回答你的問題,我肯定會把你的控制器中的閃存分配,原因是閃存是一個視圖級別的問題。

我曾經使用觀察員發送郵件,但最近剛剛發送他們在控制器。在這種情況下,這樣做會讓你的生活變得更簡單。