Les Rails de, la perdre flash après redirect_to
Je ne peux pas comprendre pourquoi mes messages flash disparaissent après un redirect_to. Commencé le débogueur de mon point de vue, et la variable flash est totalement vide.
flash
=> {}
Le résultat est le même avec le flash.maintenant... Il fonctionne très bien si je modifier quelque chose et appel rendu.
Contrôleur:
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
Application de mise en page:
- flash.each do |name, msg|
=content_tag :div, msg, :class => "flash_#{name}"
root_url est un autre contrôleur et l'action.
- Êtes-vous à l'aide de Rails 2.3.2?
- et pouvez-vous poster le code de la root_url contrôleur/action, vous êtes rediriger vers?
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez le flash en fonction messages, il y a deux moyens d'affichage de messages:
Instantanément sur le même chargement de la page, et est accessible dans la vue de
flash['foo']
:Ou sur une redirection vers une autre page, et accessible à partir de
flash['notice']
:Le ruby on rails guides de site web est vraiment une bonne référence:
http://guides.rubyonrails.org/action_controller_overview.html#the-flash
Si vous utilisez une double redirection (par exemple, rediriger vers la racine, qui redirige ensuite pour l'utilisateur), vous devez passer le flash sur.
Je viens de tomber sur cette question aussi, dans les Rails 4, et après cogner ma tête contre mon ordinateur pendant un certain temps, je l'ai remarqué dans les Rails journaux:
Can't verify CSRF token authenticity
.S'est avéré, j'étais soumettre via un formulaire qui n'ont pas un jeton CSRF en elle. Étonnamment, c'est encore d'appeler ma méthode de contrôleur et continue à faire la redirection, mais c'est ce qui le jetait hors tout.
L'ajout d'un jeton CSRF de mon formulaire, il fixe.
C'était la
render_component
plugin. Il casse les rails 2.3.2.redirect_to new_user_session_url(subdomain: @account.subdomain), notice: I18n.t('accounts.create.success_confirmation')
et, je perds mon message sur les sessions/nouvelle page. Cependant, lorsque je debug sur le contrôleur, je vois l'objet flash avec avis de clés et de valeurs. Pourriez-vous donner plus de détails sur render_component chose que vous avez fait.si vous rediriger vers une autre action en flash
et si vous êtes rendu à une même action, l'utilisation de flash.maintenant
Mon flash, le rendu n'était pas de travail pour root_url à cause de mon routage. J'ai eu le root_url redirigé vers une autre page, comme la racine :à => redirect('[SOME_OTHER_PAGE]'). Au lieu de cela, je viens de l'utiliser redirect_to à une autre ressource