Pasar hash flash de un controlador a otro controlador

Tengo un método create en un controlador y al final de este controlador quiero redirect_to otro controlador/vista. ¿Cómo podré mostrar un flash [: notice] después de que termine el primer controlador y se muestre la siguiente vista redirect_to ?

Aquí está el código en el primer controlador:

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

También noté que no funciona aquí:

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

Aquí está el archivo de rutas:

root :to => 'sessions#new'
1

3 Respuestas

Para conservar un mensaje flash sobre una solicitud adicional, puede usar flash.keep - desde la sección de flash en Rails Guides :

Digamos que esta acción corresponde a root_url, pero quieres todo   solicita que se redirija al índice UsersController #. Si una acción   establece el flash y redirige aquí, los valores normalmente se perderían   cuando ocurre otra redirección, pero puede usar 'mantener' para hacerlo   persistir para otra solicitud.

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

4
agregado

¿En qué versión de Rails estás? La sintaxis que está utilizando es una característica relativamente nueva. Intenta hacerlo a lo largo:

flash[:notice] = 'Created'
redirect_to root_path
0
agregado
intenté esto. no estoy seguro de por qué no funcionaría así tampoco.
agregado el autor locoboy, fuente

¿Has probado esto?

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

Also, you can use :error

redirect_to(whatever_path, :error=>"hello error")
0
agregado
sí lo intentó, pero todavía no estoy seguro de por qué no aparece.
agregado el autor locoboy, fuente
Tengo esto en application.html <% flash.each do | key, value | %> <div class = "alerta de alerta - <% = clave%>"> <% = valor%> </div> <% end%>
agregado el autor locoboy, fuente
¿Su diseño o vista muestra el flash [: notice] o flash [: error] ?
agregado el autor maček, fuente