2011-01-11 88 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)