2011-07-04 131 views
2

我正在使用Ruby on Rails 3.0.7,並試圖正確設置(儘可能)我的路由器。如何改善使用名稱空間與名稱空間具有相同名稱的路由器

routes.rb文件我有:

namespace :articles do 
    resources :categories 
end 

resources :articles 

爲了按預期方式工作,我必須狀態namespaceresources :articles語句之前使路由器攔截請求,並引導這些相關的命名空間文章。否則(如果resources :articlesnamespace之前所述),因爲它是從上面的代碼可以扣除,像

<my_site>/articles/1 
<my_site>/articles/new 
<my_site>/articles/1/edit 
... 

所有請求都被攔截,這樣的文章命名空間將是「很難」達到。

ActiveRecord::RecordNotFound 
Couldn't find Article with ID=categories 

那麼,我該怎麼處理這種情況,我該如何提高路由器代碼:例如,如果你犯了一個要求如<my_site>/articles/categories它下面會產生一個錯誤?你有什麼建議?


跑在我的控制檯命令rake routes我得到這樣的(因爲它是有序的):

articles_categories GET /articles/categories(.:format)               
{:action=>"index", :controller=>"articles/categories"} 

POST /articles/categories(.:format) 
{:action=>"create", :controller=>"articles/categories"} 

new_articles_category GET /articles/categories/new(.:format)             
{:action=>"new", :controller=>"articles/categories"} 

edit_articles_category GET /articles/categories/:id/edit(.:format)            
{:action=>"edit", :controller=>"articles/categories"} 

articles_category GET /articles/categories/:id(.:format)             
{:action=>"show", :controller=>"articles/categories"} 

PUT /articles/categories/:id(.:format)              
{:action=>"update", :controller=>"articles/categories"} 

DELETE /articles/categories/:id(.:format)             
{:action=>"destroy", :controller=>"articles/categories"} 

articles GET /articles(.:format)                 
{:action=>"index", :controller=>"articles"} 

POST /articles(.:format)                 
{:action=>"create", :controller=>"articles"} 

new_article GET /articles/new(.:format)                
{:action=>"new", :controller=>"articles"} 

edit_article GET /articles/:id/edit(.:format)               
{:action=>"edit", :controller=>"articles"} 

article GET /articles/:id(.:format)                
{:action=>"show", :controller=>"articles"} 

PUT /articles/:id(.:format)                
{:action=>"update", :controller=>"articles"} 

DELETE /articles/:id(.:format)                
{:action=>"destroy", :controller=>"articles"} 
+0

你的耙路線說什麼? – felix

+0

@Felix - 我更新了問題。 – Backo

回答

0

入住這rails documentation有關控制器命名空間。它說你需要命名空間你的類別控制器,如Articles::CategoriesController,您需要將您的類別控制器放在app/controllers/articles目錄下。

相關問題