Ruby on Rails中的“返回”浏览器操作

“后退”浏览器function是否可以从Rails的“后退”链接调用?

在Rails 3和更早的版本中:

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

在Rails 4中,这个方法已经被删除了。 见安德烈亚斯的评论。

使用

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

这在RDoc中有详细说明

这会产生一些JavaScript向后导航。 我刚刚testing过,它的工作原理。

在Rails 4.2中,我使用了这个工作:

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

我偷了@ cpm的答案 ,除了link_to("Refine Search", :back)在粘贴生成的代码<a href="javascript:history.back()">Refine Search</a>完美。

您可以使用link_to("Hello", :back)生成<a href="javascript:history.back()">Hello</a>

这将和浏览器后退button一样工作

<%= link_to 'Back', 'javascript:history.go(-1);' %>

注意来自用户的这个评论 ! 正如他所指出的, link_to和symbol :back并不总是产生一个“真实的”back事件,就好像用户点击了浏览器的Backbutton一样。 它也可以是加载当前视图的操作的重新提交。

Rails 4.2.6的文档中提到了link_to:back符号:

使用:back符号而不是选项散列会生成一个链接到引用链接(如果不存在,将使用JavaScript反向链接来代替引用链接)。

运用

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

似乎完全像在浏览器中点击后退button。 所有input的表单数据仍然存在,当你回来。

如果你喜欢我不想要link_to "cancel", :back的行为,那么你可以实现一个辅助方法,它或者链接到logging索引path或者显示path。 (即teams_pathteam_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 

然后可以在表单中用作<%= cancel_button @team %>

你可以使用js函数window.history.back()

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

这与Rails 5.1以及Turbolinks一起工作。

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