1 votes

RdR : Comment empêcher le changement d'url après une modification erronée ?

Dans un projet d'échafaudage standard, lorsque vous êtes sur une page d'édition, l'URL ressemble à ceci ;

/quelque chose/3/edit

Cependant, lorsque la page n'est pas validée, elle exécute le code suivant :

   format.html { :action => "edit" }

et l'url de la page devient ;

/quelque chose/3

(pas de /edit)

Pourquoi en est-il ainsi et comment l'éviter, car cela me semble incohérent et donc déroutant.

Remerciements

3voto

shingara Points 26980

C'est parce que le rendu ne modifie pas l'URL.

Lorsque vous avez fait une mise à jour, vous avez fait :

PUT /something/3

Ainsi, en cas d'échec, il n'y a pas de changement d'URL, mais seulement un rendu de votre fichier d'action (et non du code d'action).

Donc, si vous voulez avoir /new de /edit vous avez besoin d'un :

redirect_to :edit

Dans ce cas, vous avez perdu toutes les informations telles que object.errors .

-2voto

Steven Collins Points 23

Êtes-vous sûr que lorsque vous échouez, le code est format.html { :action => "new" } ?

Il devrait être

format.html { :action => "edit" }

J'ai vérifié dans mon propre code échafaudé et j'obtiens "edit" au lieu de "new" sur cette ligne.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X