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

ruby-on-rails – 如何处理Rails资源路由中的点字符?

发布时间:2020-12-17 01:33:23 所属栏目:百科 来源:网络整理
导读:我希望像这样有SEO优化的网址 http://example.com/sites/1-blau.de/plans 但路径中的点导致Rails陷入困境.如何将点转换为百分比表示形式,以便它可以工作? 我的路线: resources :sites,only: [] do resources :plans,only: [:index,:show] do endend 我尝试
我希望像这样有SEO优化的网址

http://example.com/sites/1-blau.de/plans

但路径中的点导致Rails陷入困境.如何将点转换为百分比表示形式,以便它可以工作?

我的路线:

resources :sites,only: [] do
  resources :plans,only: [:index,:show] do
  end
end

我尝试过URI.escape和CGI.escape,但都没有用.

URI.escape('a.b')=> "a.b"
CGI.escape('a.b')=> "a.b"

我以为我想要什么

Foo.escape('a.b')=> "a%2Eb"

解决方法

使用接受点字符的约束.

get 'sites/:site_name/plans',constraints: { site_name: /[a-zA-Z0-9.]+/ }

从doc:

By default,dynamic segments don’t accept dots – this is because the dot is used as a separator for formatted routes. If you need to use a dot within a dynamic segment,add a constraint that overrides this – for example,id: /[^/]+/ allows anything except a slash.

(编辑:李大同)

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

    推荐文章
      热点阅读