2011-07-06 53 views
0

我正在使用Ruby on Rails 3.0.7,並試圖設置嵌套的資源路由使其以「不常規」的RoR方式工作。以「不正常」的Ruby on Rails方式嵌套資源的路由器

在我routes.rb文件我有

resources :articles do 
    resources :categories, :only => [:index], :controller => 'articles/categories' # The related controller is Articles::CategoriesController 
end 

,這樣我可以瀏覽以下網址:

<my_site>/articles/1/categories 
<my_site>/articles/2/categories 
... 

我會做的是訪問的類別neweditshow控制器動作使用與上述嵌套資源(即Articles::CategoriesController)相同的articles/categories控制器並訪問這些URL:

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

我該怎麼做?我如何編碼路由器?


也許我可以通過使用路由器collection方法這樣

resources :articles do 
    collection do 
    # match something here for the Articles::CategoriesController... 
    end 

    resources :categories, :only => [:index], :controller => 'articles/categories' 
end 

做一些事情,但我不知道該怎麼做。

+0

你想要/articles/2/categories/new或/articles/categories/new。我要求驗證這是一個錯字?:) – felix

+0

@Felix - 我想訪問'/articles/categories/new'路徑並使用'Articles :: CategoriesController'' new' action。 – Backo

+0

您可能可以爲/articles/categories/new添加名稱空間。這裏解釋http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing – felix

回答

0

我不確定你想用這些路線做什麼,所以我不太清楚如何回答你的問題。如果您的意圖是能夠爲特定文章添加新類別,或者編輯特定文章的所有類別,則必須爲該文章傳遞一個ID。如果您嘗試一次創建新文章和新類別,則路線中不需要category,只需要文章,並且可以在表單中執行類似form_for([@article,@category])的操作,並在控制器中使用build方法。如果你能說清楚,我可能會進一步幫助你(換句話說,建造這些路線並不難 - 但這取決於你想用它們做什麼。)

+0

我想訪問'/articles/categories/new'路徑並使用'Articles :: CategoriesController'' new'動作等等除了'index'外的所有其他控制器動作,我希望使用'/articles/1/categories /'我在控制器中正確處理。 – Backo