tutorial rails official ejemplos desarrolladores curso caracteristicas ruby-on-rails

ruby on rails - rails - Rieles, perdiendo flash después de redirigir a



ruby on rails pdf (6)

No puedo entender por qué desaparecen mis mensajes flash después de un redirect_to. En mi vista, inicié el depurador y la variable flash está totalmente vacía.

flash => {}

El resultado es el mismo con flash.now ... Funciona bien si edito algo y llamo render.

Controlador:

def create @user_session = UserSession.new(params[:user_session]) if @user_session.save flash[:notice] = "Logged in" redirect_to root_url else render :action => ''new'' end end

Diseño de la aplicación:

- flash.each do |name, msg| =content_tag :div, msg, :class => "flash_#{name}"

root_url es otro controlador y acción.


Cuando utiliza la función de mensajes flash, hay dos formas de mostrar mensajes:

Al instante en la misma página cargue, y accesible en la vista desde flash[''foo''] :

flash.now[''foo''] = "Hello world"

O en una redirección a otra página, y accesible desde flash[''notice''] :

redirect_to root_url, notice: "Hello world"

El sitio web de guías de Ruby on Rails es una muy buena referencia:

http://guides.rubyonrails.org/action_controller_overview.html#the-flash


Fue el complemento render_component ... rompe rieles 2.3.2. Gracias de cualquier manera.


Mi representación flash no funcionaba para root_url debido a mi enrutamiento. He redirigido root_url a otra página, como root: to => redirect (''[SOME_OTHER_PAGE]''). En lugar de esto solo uso redirect_to a otro recurso


Si está utilizando una redirección doble (por ejemplo, la redirección a la raíz, que luego redirige al usuario), debe pasar el flash.

def first_action flash[:notice] = "Logged in" redirect_to root_url end def second_redirect_action redirect_to current_user, flash: flash end


También me encontré con este problema, en Rails 4, y después de golpear mi cabeza contra mi computadora por un tiempo, noté esto en los registros de Rails: Can''t verify CSRF token authenticity .

Resultó que lo estaba enviando a través de un formulario que no tenía un token CSRF. Sorprendentemente, todavía estaba llamando a mi método de controlador y todavía haciendo la redirección, pero esto era lo que estaba tirando todo.

La adición de un token CSRF a mi formulario lo arregló.


si está redirigido a otra acción, use flash y si está renderizado a la misma acción use flash.now