198 votes

Ruby On Rails - redirect_to(:back) ?

J'ai une page qui liste tous les projets que a sortable en-têtes et la pagination.

path:
/projects?order=asc&page=3&sort=code

- Je choisir de modifier l'un des projets

path:
projects/436/edit

Quand je clique sur enregistrer sur la page, il appelle les projets de contrôleur / méthode de mise à jour. Après je mettre à jour le code, je veux rediriger vers le chemin que j'étais avant j'ai cliqué sur modifier un projet spécifique. En d'autres termes, je veux être sur la même page avec le même tri.

J'ai vu link_to(:à l'arrière) et de la pensée :de retour peuvent travailler dans redirect_to(:à l'arrière), mais c'est un no go.

puts YAML::dump(:back) 
yields the following:
:back 

Des idées sur Comment je pourrais obtenir que cela fonctionne. Il semble comme un problème qui pourrait être facilement résolu, mais je suis nouveau sur RoR.

342voto

Jaime Bellmyer Points 13815

Dans l’action edit, stocker l’url requérant dans le hachage de la session, qui est disponible dans plusieurs requêtes :

Puis rediriger vers elle dans l’action de mise à jour, après une sauvegarde réussie :

106voto

pascal betz Points 416

Pourquoi est - redirect_to(:back) fonctionnent pas pour vous, pourquoi n'est-il pas?

redirect_to(:back) fonctionne comme un charme pour moi. C'est juste un raccourci pour redirect_to(request.env["HTTP_REFERER"])

http://apidock.com/rails/ActionController/Base/redirect_to (pré Rails 3) ou http://apidock.com/rails/ActionController/Redirecting/redirect_to (Rails 3)

46voto

Tony Points 6793

J'aime Jaime méthode, à une exception près, c'était mieux pour moi de re-stocker le referer à chaque fois:

def edit
    session[:return_to] = request.referer
...

La raison en est que si vous éditez plusieurs objets, vous serez toujours redirigé vers la première URL que vous avez stockées dans la session avec Jaime méthode. Par exemple, disons que j'ai des objets de Pomme et d'Orange. - Je modifier Apple et session[:return_to] obtient mis à la tête de cette action. Quand je vais pour modifier les Oranges à l'aide du même code, session[:return_to] ne sera pas se jeu car il est déjà défini. Alors quand j'ai mise à jour de l'Orange, je vais avoir envoyé à la tête de la précédente Apple#modifier l'action.

35voto

MBO Points 12516

Voilà comment nous le faisons dans notre application

De cette façon vous stockez dans la dernière requête GET session param, donc toutes les formes, même lorsque plusieurs fois posté travaillerait avec .

18voto

Steve Tipton Points 161

``est défini par des rampes et est définie comme suit :

Il suffit de faire un `` et il va toujours rediriger vers la véritable référence de page, ou le root_path (« / »). C’est essentiel lorsque passage des tests qui ne réussissent pas dans les cas de direct-nav vers une page particulière dans laquelle le contrôleur lève une redirect_to : retour

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