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

时间:2012-04-11 21:06:57

标签: ruby-on-rails-3 url routes permalinks

routes.rb我已设置

  

匹配“member /:permalink”=> “账户#轮廓”

当用户的网址名称为john-greenjohn_greenjohngreen时,一切正常,但当网址名称为john.green时,则会进行永久链接只是第一部分 - john 具体来说,从Rails调试窗口:

Request

Parameters:

{"permalink"=>"john",
 "format"=>"green"}

为什么不接受固定链接中的.(点)?是否存在使用该功能的任何功能? 编辑,当我使用

  match "member/:permalink" => "accounts#profile", 
        :requirements       => { :permalink => /.+/ }

我得到了

{"requirements"=>{"permalink"=>/.+/},
 "permalink"=>"john",
 "format"=>"green"}

1 个答案:

答案 0 :(得分:1)

默认情况下,Rails会将点后面的所有内容视为一种格式,看起来没有简单的方法可以覆盖此行为。但是有一些使用:requirements选项的解决方法:

match 'member/:permalink' => 'accounts#profile', 
      :constraints        => { :permalink => /.+/ }

通过为:permalink参数添加贪婪的regexp,您可以使Rails将路径中的member/子字符串后找到的所有内容传递到params[:permalink]