如何通过浏览器历史实现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()
})