为什么Rails编码斜杠用于捕获所有(splat)路由?

时间:2010-02-04 11:47:41

标签: ruby-on-rails encoding url-routing

当使用catch all route时,URL的正斜杠编码为%2F,这意味着我无法使用request.path

查找记录
map.document '*path', :controller => 'documents', :action => 'show'

Page.find_by_permalink('/blog/my_first_post') # Record found
Page.find_by_permalink('blog%2Fmy_first_post') # Record not found

首先,为什么会出现这种编码,其次是有办法将其关闭?

PS。我知道在使用find之前我可以解码request.path但是我更喜欢漂亮的URL。

1 个答案:

答案 0 :(得分:0)

尝试将你的glob变量重命名为request_path并使用params [:request_path],我做了类似的事情,我从来没有遇到过这个问题。但是,我相信我会抓住结尾并通过slug搜索,然后比较我认为应该是的路径。