ruby-on-rails - formularios - rails generic form
¿Cómo mostrar un aviso de Rails flash al redireccionar? (6)
Tengo el siguiente código en un controlador de Rails:
flash.now[:notice] = ''Successfully checked in''
redirect_to check_in_path
Luego, en la vista / check_in:
<p id="notice"><%= notice %></p>
Sin embargo, el aviso no aparece. Funciona perfecto si no redirijo en el controlador:
flash.now[:notice] = ''Successfully checked in''
render action: ''check_in''
Sin embargo, necesito un redireccionamiento ... no solo una representación de esa acción. ¿Puedo recibir un aviso de flash después de redireccionar?
Eliminar el ".now". Entonces solo escribe:
flash[:notice] = ''Successfully checked in''
redirect_to check_in_path
Se supone que el .now se usa específicamente cuando solo estás renderizando y no redireccionando. Al redireccionar, el .now no debe ser utilizado.
Esto también funcionará
redirect_to check_in_path, notice: ''Successfully checked in''
O puedes hacerlo en una línea.
redirect_to check_in_path, flash: {notice: "Successfully checked in"}
Si está utilizando Bootstrap, se mostrará un mensaje flash con un bonito formato en la página objetivo de su redireccionamiento.
En tu controlador:
if my_success_condition
flash[:success] = ''It worked!''
else
flash[:warning] = ''Something went wrong.''
end
redirect_to myroute_path
En su opinión:
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
Esto producirá HTML como:
<div class="alert alert-success">It worked!</div>
Para conocer los estilos de alerta de Bootstrap disponibles, consulte: http://getbootstrap.com/docs/4.0/components/alerts/
Referencia: https://agilewarrior.wordpress.com/2014/04/26/how-to-add-a-flash-message-to-your-rails-page/
Tuve el mismo problema, y tu pregunta resolvió la mía, porque me olvidé de incluirla en la vista / check_in:
<p id="notice"><%= notice %></p>
En el controlador, solo una línea:
redirect_to check_in_path, :notice => "Successfully checked in"
redirect_to new_user_session_path, alert: "Invalid email or password"
en lugar de :alert
puede usar :notice
para mostrar