如何通过浏览器历史实现link到"Back"?
How to implement a link to "Back" through the browser history?
文档说需要像这样完成:
url_for(:back)
但问题是这个例子只会运行一次,然后就会出现两页循环。即原来:back
不匹配浏览器历史记录,只匹配之前的路由
但是如何根据浏览器的历史实现“返回”呢?
:back
使用 HTTP_REFERER
header 会导致您所描述的行为。
如果您想使用浏览器的历史记录,您必须使用浏览器的功能,因为它是您历史记录的唯一可靠来源。您只需使用 history.back()
即可。这是一个如何内联使用它的示例:
<%= link_to "Back", "javascript:history.back()" %>
根据您构建前端的方式、您使用的库(例如 jQuery)等,您可能希望将它放入一个单独的 JS 文件中并从那里调用它。这是一个如何使用 jQuery:
执行此操作的示例
<%= link_to "Back", "#", class: "back-button" %>
$(document).on("click", ".back-button", function(event) {
event.preventDefault()
history.back()
})
文档说需要像这样完成:
url_for(:back)
但问题是这个例子只会运行一次,然后就会出现两页循环。即原来:back
不匹配浏览器历史记录,只匹配之前的路由
但是如何根据浏览器的历史实现“返回”呢?
:back
使用 HTTP_REFERER
header 会导致您所描述的行为。
如果您想使用浏览器的历史记录,您必须使用浏览器的功能,因为它是您历史记录的唯一可靠来源。您只需使用 history.back()
即可。这是一个如何内联使用它的示例:
<%= link_to "Back", "javascript:history.back()" %>
根据您构建前端的方式、您使用的库(例如 jQuery)等,您可能希望将它放入一个单独的 JS 文件中并从那里调用它。这是一个如何使用 jQuery:
执行此操作的示例<%= link_to "Back", "#", class: "back-button" %>
$(document).on("click", ".back-button", function(event) {
event.preventDefault()
history.back()
})