2011-01-11 90 views
0

我在routes.rb中 有match ":id" => "people#show"现在我可以访问http://localhost:3000/1Rails的隐藏控制器名称

,但在意见<%=的link_to '展',人们%>它会产生http://localhost:3000/people/1

我想成为http://localhost:3000/1

回答

1

你可以编写一个自定义路由来匹配config/routes.rb中的路由。在routes.rb文件的底部,您将有类似于匹配':controller(/:action(/:id(.:format)))' 或类似resources :people之类的路线。您可能必须编写与您需要的路线类型相匹配的路线。

3

你可以做这样的事情,以确保只有数字ID匹配:

 
match '/:id' => 'people#show', :constraints => {:id => /\d+/} 

一个很好的选择可能是使用某种标识,即使它不是控制器名称:http://localhost:3000/p/1。这至少会确保如果添加其他控制器和操作,您最终不必更改路由结构。

+0

出现错误 - 路由要求中不允许使用Regexp主播字符:/^\ d/ – pamella 2011-01-11 23:05:52

1

您必须创建一条命名路线。

match ':id' => 'people#show', :as => :person 

并修复您的意见,以使用您的新方法person_path(user_id)