1

routes.rb我已经设置

匹配“成员/:永久链接”=>“帐户#profile”

当用户的 url 名称为john-green, john_green, 时johngreen,一切正常,但当 url 名称为 时john.green,永久链接仅采用第一部分 -john 具体来说,来自 Rails 调试窗口:

Request

Parameters:

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

为什么不接受.永久链接中的(点)?存在使用它的任何功能吗? 编辑当我使用

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

我明白了

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

1 回答 1

1

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

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

通过为参数添加贪婪的正则表达式,:permalink您可以让 Rails 将member/在路径中的子字符串之后找到的所有内容传递到params[:permalink].

于 2012-04-11T21:15:02.293 回答