La fonctionnalité de navigateur 'Précédent' peut-elle être invoquée à partir d'un lien 'Précédent' de Rails?
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.
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.
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.
Cela fonctionne dans Rails 5.1 avec Turbolinks.
link_to 'Back', 'javascript:history.back()'
Vous pouvez utiliser link_to("Hello", :back)
pour générer <a href="javascript:history.back()">Hello</a>
.
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 ).
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.
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.
Vous pouvez utiliser la fonction js window.history.back ()
= link_to 'Back', onclick: "window.history.back();"