我想知道在Rails5或6中是否有获取当前访问的完整url的方法。
例如:
http://localhost:3000/#about
http://localhost:3000/books
http://localhost:3000/books/sale
http://localhost:3000/books/#reference
我尝试过request.fullpath
,但它不能处理特殊字符,如来自http://localhost:3000/#about
或http://localhost:3000/books/#reference
的#
我只需要完整的网址,因为它是。有没有办法做到这一点?
发布于 2020-01-30 21:28:30
#
之后的Url部分被称为锚,它不会被发送到服务器,完全在浏览器中处理(默认情况下,它会滚动到具有相同id
的a
元素,通常也会被SPA重载以获得一些类似的效果)。
在用户的地址栏中获取完整页面位置的唯一方法是从javascript window.location
获取,然后以某种方式发送到后端。
发布于 2020-01-30 21:28:57
在将请求发送到服务器之前,浏览器会剥离锚文本( #
字符之后的任何内容)。因此,默认情况下,此信息对您不可用。
如果您希望在服务器端读取此信息,则必须将锚文本作为请求的参数,并设置锚变量。(设置锚变量会独占地修改生成的html标记的href属性)
例如。
<%= link_to "Books", books_path(params.merge(anchor: "sent-to-server")), anchor: "rendered-in-dom" %>
然后,可以使用params[:anchor]
在服务器端读取锚点
https://stackoverflow.com/questions/59986591
复制相似问题