Rails: redirect_to com: erro, mas flash [: erro] vazio


117

Estou tentando fazer um redirecionamento ao definir o valor do flash [: erro]. (Rails 3.0.10)

Na minha opinião eu tenho

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

Se eu fizer um redirect_to show_path, :notice => "ok", funciona bem, mas se eu fizer redirect_to show_path, :error => "error"isso não aparecerá.

o que eu poderia estar faltando?

Respostas:


237

Conforme declarado na API Rails apenas: notice e: alert são por padrão aplicados como um valor flash hash. Se você precisar definir o valor: error, poderá fazer assim:

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

3
Para maior clareza: redirect_to(show_path, {:flash => { :error => "Insufficient rights!" }}). Este formato é necessário se você deseja criar show_path com opções de url.
spyle de

1
Isso funcionou para mim também, eu só me pergunto qual foi o pensamento por trás de apenas aviso / alerta estar no hash flash
jbnunn

2
Trabalhou no Rails 5
Richard Peck

1
Você pode mudar do formato Ruby 1.9 para:redirect_to(show_path, flash: { error: "Insufficient rights!" })
mmsilviu

17

Se você estiver tendo problemas para manter o flash após redirecionar para outro caminho, use isso.

flash.keep

no seu método, antes de redirecionar.


Acabei de receber o seguinte mostrado na página direcionada:#<ActionDispatch::Flash::FlashHash:0x007f88c6e0c3c8> #<ActionDispatch::Flash::FlashHash:0x007f88c6e0c3c8>
Hengjie

Parece que não é a resposta da pergunta, mas é a solução do meu problema!
Claudio Shigueo Watanabe

0

Para realmente seguir o padrão PRG, eu me pergunto se este projeto funciona bem

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

Eu não suporto apps que não sigam PRG como um usuário ... Eu estive 6 páginas após um POST e apertei o botão Voltar para voltar a 10 páginas atrás e sou bloqueado por "você quer postar novamente esta porcaria". ...não, claro que não. Só quero voltar a uma página que já tinha visto.

aplicativos não PRG são muito irritantes para os usuários.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.