Pourquoi :avis non, après le rediriger dans Rails 3
J'ai le code suivant dans mon contrôleur
def create
@tv_show = TvShow.new(params[:tv_show])
respond_to do |format|
if @tv_show.save
format.html { redirect_to(tv_shows_path, :notice => 'Tv show was successfully created.') }
format.xml { render :xml => @tv_show, :status => :created, :location => @tv_show }
else
format.html { render :action => "new" }
format.xml { render :xml => @tv_show.errors, :status => :unprocessable_entity }
end
end
end
et de la suite dans mon tv_shows/index.html.erb
<div id="notice"><%= notice %></div>
mais quand je crée une nouvelle entrée de l'avis de message ne s'affiche pas après le rediriger vers tv_shows_path. Quelqu'un à une idée pourquoi?
OriginalL'auteur maveonair | 2011-01-25
Vous devez vous connecter pour publier un commentaire.
Est-il une raison pour laquelle vous essayez d'utiliser
:notice
et pasflash[:notice]
?Contrôleur:
Vue:
J'ai lu que ce serait la nouvelle façon avec les rails de la version 3... Mais je vais essayer votre suggestion, merci!
Fait ce travail pour vous?
Le code était correct, mais j'ai eu un problème d'authentification et de ce fait, le code ne fonctionnait pas...
:notice
et:alert
sont acceptés dansredirect_to
dans Rails 3.OriginalL'auteur Shaun
J'ai rencontré de semblable "problème" et la cause est que j'ai été la redirection vers l'action que lui-même avait une autre redirection. Dans le cas ci-dessus, la cause la plus probable était que dans
tv_shows_path
une autre redirection existe.Dans mon cas, j'ai eu quelque chose comme cela dans un filtre:
Et
root_url
a été mis au point pourhome#index
:Cette deuxième redirect_to était la cause de mon "unauthorized_access' avis de ne pas le montrer.
La solution est tout simplement de rediriger vers
customers_path
immédiatement et de ne pasroot_url
. Espérons que cela aide quelqu'un.flash.keep
où le deuxième rediriger arrive (avant leredirect_to
appel). C'est ce que j'ai fait et il semble fonctionner comme prévu.OriginalL'auteur draganstankovic
J'ai juste eu le même problème et l'erreur était tellement idiot, mais parfois unnotable.
J'ai dans mon application de mise en page le code suivant:
Maintenant, voyez-vous pourquoi je n'ai pas pu voir mon message flash?
Yup! Vous devriez vérifier si vous avez mis le
=
de signer ici:content_tag
, il devrait êtremsg
au lieu de:msg
OriginalL'auteur juliangonzalez
La raison pourquoi le code ne fonctionne pas eu un problème avec mon code d'authentification... Après j'ai mis en place ma nouvelle façon d'authentification à partir de zéro le code ci-dessus est le travail.
before_filter :authenticate_user!
. Est-ce mal?Désolé, mais je ne sais plus quel était le problème, il y a un an. En ce moment j'utilise has_secure_password depuis Rails 3.1 et cela fonctionne vraiment très bien pour moi. railscasts.com/episodes/270-authentication-in-rails-3-1
OriginalL'auteur maveonair