Ruby on Rails: Наблюдатели и флеш-сообщения: - PullRequest
3 голосов
/ 04 января 2010

Я пытаюсь отправить флеш-сообщения и приветствия пользователям, если они впервые комментируют; в основном как то так:

  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?») Или есть способ отобразить флэш-сообщение более эффективно?

Ответы [ 2 ]

5 голосов
/ 04 января 2010

Ввод флеш-сообщения в метод мне кажется нормальным.

У меня обычно есть вспомогательный метод в моем файле 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 %>
2 голосов
/ 04 января 2010

Во-первых, почему вы наблюдаете комментарии? Если вы хотите отреагировать на нового пользователя, почему вы не наблюдаете за пользователями?

Чтобы ответить на ваш вопрос, я бы определенно поместил назначение вспышки в ваш контроллер, причина в том, что вспышка является проблемой уровня обзора.

Раньше я использовал наблюдателей для отправки писем, но в последнее время только что отправил их в контроллер. В этом случае это сделает вашу жизнь немного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...