Ruby on Rails:Observers和flash [:notice]消息?

时间:2010-01-04 18:19:25

标签: ruby-on-rails ruby

我正在尝试向用户发送Flash消息和欢迎通知,如果这是他们的第一次评论;基本上,这样的事情:

  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?”)还是有办法更有效地显示闪存消息?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

首先,你为什么观察评论?如果您想对新用户做出反应,为什么不观察用户?

要回答你的问题,我肯定会将闪光灯分配放在你的控制器中,原因是闪光灯是视角级别的问题。

我过去常常使用观察者来发送邮件,但最近才将其发送到控制器中。在这种情况下,这样做会让你的生活变得更简单。