【发布时间】:2010-10-11 21:08:34
【问题描述】:
是否可以从 Rails 的“返回”链接调用“返回”浏览器功能?
【问题讨论】:
标签: ruby-on-rails browser
是否可以从 Rails 的“返回”链接调用“返回”浏览器功能?
【问题讨论】:
标签: ruby-on-rails browser
【讨论】:
request.referer 存在时,这不会使用javascript:history.back()。
在 Rails 3 及更早版本中:
link_to_function "Back", "history.back()"
在 Rails 4 中,此方法已被删除。请参阅 Andreas 的评论。
【讨论】:
undefined method 'link_to_function' for #<#<Class
onclick: 'history.back(),而不是在 URL 参数中(这不起作用,至少在我用 Firefox 尝试时)。
这适用于 Rails 5.1 和 Turbolinks。
link_to 'Back', 'javascript:history.back()'
【讨论】:
在 Rails 4.2 中,我可以使用它:
<a href="javascript:history.back()">Refine Search</a>
我从@cpm’s answer 偷了这个,除了link_to("Refine Search", :back) 没有做我想要的工作,而粘贴到生成的代码<a href="javascript:history.back()">Refine Search</a> 做得很好。
【讨论】:
link_to("Refine Search", :back) 将只保存最后一个操作,不带任何参数,然后将您放回到您的解决方案使用 js 的位置
link_to 的确切语法是什么?
您可以使用link_to("Hello", :back) 生成<a href="javascript:history.back()">Hello</a>。
【讨论】:
这与浏览器后退按钮的工作方式类似
<%= link_to 'Back', 'javascript:history.go(-1);' %>
【讨论】:
注意来自用户rthbound的this comment!正如他所指出的,带有符号:back 的link_to 并不总是像用户单击浏览器的后退按钮一样生成“真实”的后退事件。也可以是重新提交加载当前视图的操作。
documentation for Rails 4.2.6 表示 link_to 和 :back 符号:
使用
:back符号而不是选项哈希将生成指向 引荐来源网址(如果没有引荐来源网址,则将使用 JavaScript 反向链接代替引荐来源网址 存在)。
【讨论】:
如果你喜欢我不想要link_to "cancel", :back 的行为,你可以实现一个辅助方法,它可以链接到记录索引路径或显示路径。 (即teams_path或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
然后可以在表单中用作<%= cancel_button @team %>。
【讨论】:
可以使用js函数window.history.back()
= link_to 'Back', onclick: "window.history.back();"
【讨论】:
使用
link_to_function "Back", "history.back()"
似乎与点击浏览器中的后退按钮完全一样。当您返回时,所有输入的表单数据仍然存在。
【讨论】: