validaciones rails generic formularios form for association anidados ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4 rails-flash

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