2010-12-10 4 views
2

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

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

Однако флэш-сообщение не отображается, хотя все другие флэш-сообщения работают в моем приложении. просмотров/макеты/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> 

Что я здесь делаю неправильно?

ответ

5

Вспышка использует сессии для хранения сообщений

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

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

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

Вспышка более предпочтительна le, он работает неявно через страницы и очищается после его отображения

2

На ваш взгляд, вы получаете доступ к флэш-сообщение уведомления с помощью

<%= 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.") 
+0

Если я изменяю `<%= alert %>` на `<% = flash [: alert]%>` (и предложение `if`), то пока не отображается сообщение , – slhck 2010-12-10 10:25:16

+0

Я обновляю ответ. – 2010-12-10 10:29:34

Смежные вопросы