Rails: redirect_to с: error, но flash [: error] пусто


117

Я пытаюсь выполнить перенаправление при установке значения flash [: error]. (Рельсы 3.0.10)

На мой взгляд, у меня есть

<p id="error"><%= flash[:error] %></p>
<p id="notice"><%= flash[:notice] %></p>

Если я сделаю это, redirect_to show_path, :notice => "ok"он будет работать нормально, но если я сделаю redirect_to show_path, :error => "error"это, он не появится.

что я мог упустить?

Ответы:


238

Как указано только в Rails API : notice и: alert по умолчанию применяются как значение хэша flash. Если вам нужно установить значение: error, вы можете сделать это следующим образом:

redirect_to show_path, flash: { error: "Insufficient rights!" }

3
Для ясности: redirect_to(show_path, {:flash => { :error => "Insufficient rights!" }}). Этот формат необходим, если вы хотите создать show_path с параметрами URL.
spyle

1
Это сработало и для меня, мне просто интересно, какая мысль стояла за только уведомлением / предупреждением во флеш-хэше
jbnunn

2
Worked in Rails 5
Ричард Пек

1
Вы можете перейти от формата redirect_to(show_path, flash: { error: "Insufficient rights!" })
Ruby

17

Если у вас возникли проблемы с сохранением флэш-памяти после перенаправления на другой путь, используйте это.

flash.keep

в вашем методе перед перенаправлением.


Я только что получил следующее, показанное на #<ActionDispatch::Flash::FlashHash:0x007f88c6e0c3c8> #<ActionDispatch::Flash::FlashHash:0x007f88c6e0c3c8>
целевой

Кажется, это не ответ на вопрос, а решение моей проблемы!
Claudio Shigueo Watanabe

0

Чтобы действительно следовать шаблону PRG, мне интересно, хорошо ли работает этот проект

https://github.com/tommeier/rails-prg

Я терпеть не могу приложения, которые не следят за PRG как пользователь… Я прошел 6 страниц после POST и нажал кнопку «Назад», чтобы вернуться на 10 страниц назад, и меня заблокировали «вы хотите репостить эту хрень». ...нет, конечно нет. Я просто хочу вернуться на страницу, которую видел раньше.

Приложения, не относящиеся к PRG, очень раздражают пользователей.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.