路由 - 为什么永久链接“john.green”不起作用?

问题描述:

routes.rb我已经建立了路由 - 为什么永久链接“john.green”不起作用?

匹配 “成员/:永久”=> “账户#简介”

当用户的URL名称为john-greenjohn_greenjohngreen,一切正常,但是当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]后耳目一新。

+0

感谢您的回复,但不幸的是,url名称仍然分为两部分(我更新了我原来的帖子) – user984621 2012-04-11 21:21:33

+0

对不起,我的错误。它应该是“约束”,而不是“要求”。更新并测试了答案 - 在Rails 3.2.3上对我很好。 – 2012-04-12 05:52:01

+0

太棒了,它的工作!谢谢。 – user984621 2012-04-12 09:13:38