web-dev-qa-db-fra.com

Action du navigateur 'Précédent' dans Ruby on Rails

La fonctionnalité de navigateur 'Précédent' peut-elle être invoquée à partir d'un lien 'Précédent' de Rails? 

48
alamodey

Dans Rails 3 et versions antérieures:

link_to_function "Back", "history.back()"

Dans Rails 4, cette méthode a été supprimée. Voir le commentaire d'Andreas.

25
Sophie Alpert

Utilisation

<%= link_to 'Back', :back %>

Ceci est spécifié dans le RDoc ici

Cela génère du Javascript pour naviguer en arrière. Je viens de le tester et ça marche.

170
Tilendor

Dans Rails 4.2, je l'ai fait fonctionner avec ceci:

<a href="javascript:history.back()">Refine Search</a>

J’ai volé cela dans @ cpm’s answer , sauf que link_to("Refine Search", :back) n’a pas fait le travail que je voulais en collant dans le code généré <a href="javascript:history.back()">Refine Search</a> l’a fait parfaitement.

10
Jay Killeen

Cela fonctionne dans Rails 5.1 avec Turbolinks.

link_to 'Back', 'javascript:history.back()'
7
HarlemSquirrel

Vous pouvez utiliser link_to("Hello", :back) pour générer <a href="javascript:history.back()">Hello</a>.

7
cpm

Faites attention à ce commentaire de la part de l'utilisateur rthbound ! Comme il le note, link_to avec le symbole :back ne génère pas toujours un événement «réel» comme si l'utilisateur cliquait sur le bouton Précédent de son navigateur. Il peut également s'agir d'une nouvelle soumission de l'action qui a chargé la vue actuelle.

La documentation pour Rails 4.2.6 dit ceci à propos de link_to et du symbole :back:

L'utilisation d'un symbole :back au lieu d'un hachage d'options générera un lien vers le référent (un lien JavaScript de retour sera utilisé à la place d'un référent s'il n'en existe aucun ).

2
Philippe Addor

Si vous ne m'aimez pas le comportement de link_to "cancel", :back, vous pouvez implémenter une méthode d'assistance liant au chemin d'index des enregistrements ou au chemin d'affichage. (i.e teams_path ou team_path(@team)

module CancelFormButtonHelper
  def cancel_button(record)
    index_path = record.class.to_s.pluralize.downcase + "_path"
    path = record.persisted? ? record : eval(index_path)

    link_to "Cancel", path
  end
end

qui peut ensuite être utilisé comme <%= cancel_button @team %> dans un formulaire par exemple.

0
Dan Andreasson

En utilisant

link_to_function "Back", "history.back()"

semble être exactement comme frapper le bouton de retour dans le navigateur. Toutes les données de formulaire saisies sont toujours présentes à votre retour.

0
Mark A

Vous pouvez utiliser la fonction js window.history.back ()

 = link_to 'Back', onclick: "window.history.back();"
0
Evan Ross