rails 3.2路由不匹配:控制器约束

时间:2012-06-07 19:59:31

标签: ruby-on-rails controller routes constraints

我正在使用这条路线:

  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,因此这不是一个选项。

1 个答案:

答案 0 :(得分:0)

弗雷德里克·张在上面的评论中得到了答案,但他不会在这里添加,所以我要结束这个老问题。

由于网址有“。”在其中,rails感到困惑,这是一个扩展。通过指定格式来帮助它:

match ':controller(/:action(/:id))', :constraints => {:id => /.*/,
 :controller => /[a-z]$/, :format => /(html|js)/}