路由 - 为什么永久链接“john.green”不起作用?
问题描述:
在routes.rb
我已经建立了路由 - 为什么永久链接“john.green”不起作用?
匹配 “成员/:永久”=> “账户#简介”
当用户的URL名称为john-green
,john_green
,johngreen
,一切正常,但是当url的名字是john.green
,那么固定链接只取第一部分 - john
具体来说,从Rails调试窗口:
Request
Parameters:
{"permalink"=>"john",
"format"=>"green"}
为什么不接受.
(dot)的永久链接?存在使用该功能的任何功能? 编辑当我使用
match "member/:permalink" => "accounts#profile",
:requirements => { :permalink => /.+/ }
我得到
{"requirements"=>{"permalink"=>/.+/},
"permalink"=>"john",
"format"=>"green"}
答
默认情况下轨点作为格式后对待一切,看起来像有重写此行为没有简单的方法。但是,有一个使用:requirements
选项有点脏解决办法:
match 'member/:permalink' => 'accounts#profile',
:constraints => { :permalink => /.+/ }
通过增加贪婪正则表达式为:permalink
参数你让Rails的它传递member/
子路径进入params[:permalink]
后耳目一新。
感谢您的回复,但不幸的是,url名称仍然分为两部分(我更新了我原来的帖子) – user984621 2012-04-11 21:21:33
对不起,我的错误。它应该是“约束”,而不是“要求”。更新并测试了答案 - 在Rails 3.2.3上对我很好。 – 2012-04-12 05:52:01
太棒了,它的工作!谢谢。 – user984621 2012-04-12 09:13:38