Rails Flash сообщение не отображается - PullRequest
2 голосов
/ 10 декабря 2010

У меня есть строка в контроллере, которая будет перенаправлять на домашний экран с настраиваемым флэш-сообщением, например:

redirect_to :controller => :home, :action => :index, :alert => "You are not yet assigned to an experiment." and return

Затем пользователь перенаправляется на следующую страницу: http://localhost:3000/home?alert=You+are+not+yet+assigned+to+an+experiment

Однако флэш-сообщение не отображается, хотя все другие флэш-сообщения работают в моем приложении. Файл views / layouts / application.html.erb содержит следующее:

<div class="flash">
    <%- if !notice.nil? -%>
    <p class="notice"><%= notice %></p>
    <%- end -%> 
    <%- if !alert.nil? -%>
    <p class="alert"><%= alert %></p>
    <%- end -%>     
</div>

Что я здесь не так делаю?

Ответы [ 2 ]

5 голосов
/ 10 декабря 2010

Flash использует сеанс для хранения сообщений

flash[:alert] = "You are not yet assigned to an experiment."
redirect_to :controller => :home, :action => :index and return
<%= flash[:alert] %>

Если вы хотите передать его через параметры, вы должны использовать параметры [: param_name]

redirect_to :controller => :home, :action => :index, :alert => "You are not yet assigned to an experiment." and return
<%= params[:alert] %>

Flash предпочтительнее, этоработает неявно на всех страницах и очищается после его показа

2 голосов
/ 10 декабря 2010

С вашей точки зрения, вы получаете доступ к уведомлению о флеше, используя

<%= flash[:notice] %>

, а не

<%= notice %>

То же самое относится и к предупреждению.

Также естьошибка в вашем коде.

redirect_to :controller => :home, :action => :index, :alert => "You are not yet assigned to an experiment."

должно быть

redirect_to({ :controller => :home, :action => :index }, :alert => "You are not yet assigned to an experiment.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...