在routes.rb
我已设置
匹配“member /:permalink”=> “账户#轮廓”
当用户的网址名称为john-green
,john_green
,johngreen
时,一切正常,但当网址名称为john.green
时,则会进行永久链接只是第一部分 - john
具体来说,从Rails调试窗口:
Request
Parameters:
{"permalink"=>"john",
"format"=>"green"}
为什么不接受固定链接中的.
(点)?是否存在使用该功能的任何功能?
编辑,当我使用
match "member/:permalink" => "accounts#profile",
:requirements => { :permalink => /.+/ }
我得到了
{"requirements"=>{"permalink"=>/.+/},
"permalink"=>"john",
"format"=>"green"}
答案 0 :(得分:1)
默认情况下,Rails会将点后面的所有内容视为一种格式,看起来没有简单的方法可以覆盖此行为。但是有一些使用:requirements
选项的解决方法:
match 'member/:permalink' => 'accounts#profile',
:constraints => { :permalink => /.+/ }
通过为:permalink
参数添加贪婪的regexp,您可以使Rails将路径中的member/
子字符串后找到的所有内容传递到params[:permalink]
。