Il a été un moment depuis que cette question a été publiée - mais je viens de passer un certain temps comprendre ceci & n'a pas pu trouver trop d'aide sur cette ligne, donc:
La solution est de créer des fichiers .js.erb - un pour le succès et un pour l'échec.
def create
@foo = Foo.new(params[:foo])
if @foo.save
respond_to do |format|
format.html { redirect_to root_path }
format.js { render :action => "success"} #rails now looks for success.js.erb
end
else
respond_to do |format|
format.html { render :action => 'new'}
format.js { render :action => "failure"} #rails now looks for failure.js.erb
end
end
end
end
Si semble que si vous ne spécifiez pas un nom de fichier, rails rechercheront create.js.erb dans les deux cas (parce que format.js est appelé de créer). Ce n'est pas génial dans le cas de situations de réussite ou d'erreur, car vous souhaitez un comportement différent pour chaque scénario. Remplacez donc les noms de fichiers par l'attribut: action.