2012-06-18 2 views
1

У меня есть метод create в одном контроллере, и в конце этого контроллера я хочу redirect_to другой контроллер/просмотр. Как я смогу отобразить flash[:notice] после того, как будет выполнен первый контроллер, и будет отображаться следующий вид redirect_to?Передача флэш-хэш от одного контроллера к другому контроллеру

Вот код в первом контроллере:

if @list.save 
     redirect_to root_path, :notice => "Created!" 

Я также заметил, что он здесь не работает либо:

if @list.save 
    redirect_to root_path, :alert => "Created!" 

Вот файл маршруты:

root :to => 'sessions#new' 

ответ

4

Чтобы сохранить флэш-сообщение по дополнительному запросу вы можете использовать flash.keep - от the flash section on Rails Guides:

Допустим, это действие соответствует root_url , но вы хотите, чтобы все запросы были перенаправлены на индекс UsersController #. Если действие устанавливает здесь вспышку и переадресацию, значения обычно теряются , когда происходит другое перенаправление, но вы можете использовать «держать», чтобы сделать это , для другого запроса.

Разъяснение: Это решение относится только если вы теряете вспышку из-за двойного редиректа.

0

Вы пробовали это?

redirect_to(whatever_path, :notice=>"hello world") 

Кроме того, вы можете использовать :error

redirect_to(whatever_path, :error=>"hello error") 
+0

да пробовал это, но все еще не уверен, почему он не появляется. – locoboy

+0

Является ли ваш макет или представление выводом 'flash [: notice]' или 'flash [: error]'? –

+0

У меня это в application.html '<% flash.each do | key, value | %>

<%= value %>
<% end %> ' – locoboy

0

Какая версия Rails включена? Синтаксис, который вы используете, является относительно новой функцией. Постарайтесь сделать это долгий путь:

flash[:notice] = 'Created' 
redirect_to root_path 
+0

попробовал это. не уверен, почему это тоже не сработает. – locoboy

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