首页 > 解决方案 > 如何通过浏览器历史实现“返回”的链接?

问题描述

文档说明了需要像这样做的事情:

url_for(:back)

但问题是这个例子只能运行一次,然后就会出现两页循环。也就是说,原来:back不匹配浏览器历史记录,而只匹配之前的路由。

但是如何按照浏览器的历史来实现“返回”呢?

标签: ruby-on-railsruby-on-rails-6

解决方案


:back使用HTTP_REFERER导致您所描述的行为的标题。

如果你想使用浏览器的历史,你必须使用浏览器的工具,因为它是你历史的唯一可靠来源。您只需使用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()
})

推荐阅读