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

“ Back”浏览器功能是否可以从 Rails 的“ Back”链接中调用?

59329 次浏览

使用

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

这是在 RDoc 给你中指定的

这会生成一些 Javascript 来向后导航。

在 Rails 3及更早版本中:

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

在 Rails 4中,这个方法已经被删除了。

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

Rails < = 4.0

吸毒

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

看起来就像在浏览器里点击后退按钮一样。当您返回时,所有输入的表单数据仍然存在。

在 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 'Back', 'javascript:history.go(-1);' %>

请注意来自用户 向右此评论!正如他所指出的,符号为 :backlink_to并不总是生成一个“真正的”后退事件,就好像用户点击了浏览器的后退按钮一样。它也可以是加载当前视图的操作的重新提交。

Rails 4.2.6的文档表示 link_to:back的符号:

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

如果你像我一样不希望 link_to "cancel", :back的行为,你可以实现一个帮助器方法,要么链接到记录索引路径或显示路径。(即 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()'