我在routes.rb中 有match ":id" => "people#show"
现在我可以访问http://localhost:3000/1
Rails的隐藏控制器名称
,但在意见<%=的link_to '展',人们%>它会产生http://localhost:3000/people/1
,
我想成为http://localhost:3000/1
我在routes.rb中 有match ":id" => "people#show"
现在我可以访问http://localhost:3000/1
Rails的隐藏控制器名称
,但在意见<%=的link_to '展',人们%>它会产生http://localhost:3000/people/1
,
我想成为http://localhost:3000/1
你可以编写一个自定义路由来匹配config/routes.rb中的路由。在routes.rb文件的底部,您将有类似于匹配':controller(/:action(/:id(.:format)))'
或类似resources :people
之类的路线。您可能必须编写与您需要的路线类型相匹配的路线。
你可以做这样的事情,以确保只有数字ID匹配:
match '/:id' => 'people#show', :constraints => {:id => /\d+/}
一个很好的选择可能是使用某种标识,即使它不是控制器名称:http://localhost:3000/p/1。这至少会确保如果添加其他控制器和操作,您最终不必更改路由结构。
您必须创建一条命名路线。
match ':id' => 'people#show', :as => :person
并修复您的意见,以使用您的新方法person_path(user_id)
。
出现错误 - 路由要求中不允许使用Regexp主播字符:/^\ d/ – pamella 2011-01-11 23:05:52