Passando o hash do flash de um controlador para outro controlador

Eu tenho um método create em um controller e no final deste controller eu quero redirect_to outro controller/view. Como poderei exibir um flash [: notice] depois que o primeiro controller estiver pronto e a próxima view redirect_to for renderizada?

Aqui está o código no primeiro controlador:

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

Também notei que também não funciona aqui:

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

Aqui está o arquivo de rotas:

root :to => 'sessions#new'
1
adicionado editado
Visualizações: 1

3 Respostas

Para persistir uma mensagem flash sobre uma requisição adicional, você pode usar flash.keep - de a seção flash em Guias de Rails :

Digamos que esta ação corresponda a root_url, mas você quer que todos   solicita aqui para ser redirecionado para o índice UsersController #. Se uma ação   define o flash e redireciona aqui, os valores normalmente seriam perdidos   quando outro redirecionamento acontece, mas você pode usar 'keep' para fazer isso   persistir para outro pedido.

Clarification: This solution only applies if you're losing the flash due to a double redirect.

4
adicionado

Em qual versão do Rails você está? A sintaxe que você está usando é um recurso relativamente novo. Tente fazer o caminho mais longo:

flash[:notice] = 'Created'
redirect_to root_path
0
adicionado
tentei isso. não sei por que não funcionaria assim também.
adicionado o autor locoboy, fonte

Você já tentou isso?

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

Also, you can use :error

redirect_to(whatever_path, :error=>"hello error")
0
adicionado
sim tentei isso, mas ainda não tenho certeza por que ele não está aparecendo.
adicionado o autor locoboy, fonte
Eu tenho isso no application.html <% flash.each do | key, value | %> <div class = "alerta alerta - <% = chave%>"> <% = valor%> </div> <% end%>
adicionado o autor locoboy, fonte
Seu layout ou visualização está exibindo o flash [: notice] ou flash [: error] ?
adicionado o autor maček, fonte