我正在使用这条路线:
match ':controller(/:action(/:id))', :constraints => {:id => /.*/, :controller => /[a-z]$/}
match ':controller', :to => :index, :constraints => {:controller => /[a-z]/}
get ':id' => 'user#show', :constraints => {:id => /.+/}
当我运行rake show routes时:
/:controller(/:action(/:id))(.:format) {:id=>/.*/}
/:controller(.:format) :controller#index
GET /:id(.:format) user#show {:id=>/.+/}
未显示对控制器的约束。
我的目标是请求" M.包法利"路由到' / user / show /',:id => ' M。包法利夫人&#39 ;.目前它正在路由到Mcontroller #index,根本没有传递id。 " /米" => "#MController指数"
在我看来,rails匹配约束的第一部分然后"扔掉"其余的论点。约束似乎忽略^或$或\ Z,因此这不是一个选项。
答案 0 :(得分:0)
弗雷德里克·张在上面的评论中得到了答案,但他不会在这里添加,所以我要结束这个老问题。
由于网址有“。”在其中,rails感到困惑,这是一个扩展。通过指定格式来帮助它:
match ':controller(/:action(/:id))', :constraints => {:id => /.*/,
:controller => /[a-z]$/, :format => /(html|js)/}