加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何构建一个包含`#`的路由?

发布时间:2020-12-17 02:49:02 所属栏目:百科 来源:网络整理
导读:如何在其中构建带有#标签的路由?我创造了这条路线 get 'authors/#/:id' = 'authors#show 但这会产生路线 GET /authors/%23/:id(.:format) 所以#应该是#所在的#. 解决方法 您不能在服务器上的URL中使用#,它会调用 Fragment Identifier并且是本地页内锚点,浏
如何在其中构建带有#标签的路由?我创造了这条路线

get 'authors/#/:id' => 'authors#show

但这会产生路线

GET    /authors/%23/:id(.:format)

所以#应该是#所在的#.

解决方法

您不能在服务器上的URL中使用#,它会调用 Fragment Identifier并且是本地页内锚点,浏览器永远不会将其发送到服务器.

更新

OP在评论客户端路由中添加了信息.

是的,虽然这在您的应用程序的服务器端没有任何意义,但您绝对可以拥有带有哈希值的客户端路由.现代浏览器(HTML5支持)甚至有一个你可以绑定的hashchange事件,虽然因为旧的浏览器不支持,所以你通常会使用jQuery的hashchange插件,或者Angular支持这个.

我们的想法是,浏览器基本上可以检测到URL更改,并且因为#change永远不会触发对服务器的请求,所以这是一种在不触发服务器请求的情况下触发客户端应用程序更改的便捷方式.

另一个更新

来自OP的另一条评论……

在服务器端没有任何东西可以做.如果您的前端人员想要使用像/ authors#123这样的基于#的URL来触发该作者的客户端负载,那么他的JS将会监听该哈希变换,然后他会做一个常规的非哈希 – 包含,请求服务器,如GET /authors/123.json,然后将使用该响应更新加载页面的HTML.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读