Flash-сообщение отображается дважды при использовании redirect_to (Rails 2)

Хорошо, это странно.

flash[:success] = 'some success message'
redirect_to :controller => 'media', :action => 'index'

Сообщение отображается после редиректа, дело в том, что оно также появляется еще раз после нажатия на ссылку или перехода на другую страницу в моем приложении (после первого редиректа)


person mendi    schedule 16.11.2011    source источник


Ответы (2)


Для флэш-памяти сначала различайте рендеринг и redirect_to, потому что флэш-сообщение удаляется только после перенаправления. Это у вас нормально.

Затем, если вы хотите, чтобы сообщение отображалось в следующем запросе после перенаправления, используйте flash[]. Если вы хотите, чтобы в текущем запросе отображалось сообщение, используйте flash.now[].

Посмотрите, поможет ли это.

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

- flash.slice(:notice, :message, :error, :success, :warning, :failure).each do |level, value|
  - if value.present?
    %div{:class => "flash #{h level}"}
      = h value
      - flash[level] = nil # set to nil in case the flash was set outside of a redirect
person Michael Durrant    schedule 16.11.2011

Кроме того, вы должны обратить внимание на то, чтобы не включать флэш-сообщения в файл view/layouts/application.html.erb. Может так получилось :)

person miksiii    schedule 26.04.2014