2011-07-06 7 views
0

私はRuby on Rails 3.0.7を使用していますが、 "not regular" RoRで動作するようにネストされたリソースルーティングを設定しようとしています。"普通ではない" Ruby on Railsの方法で入れ子になったリソースのためのルータ

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

私は何を希望することにより、カテゴリのneweditshowコントローラのアクションにアクセスすることです:私は、次のURLを参照することができるように、私は

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

を持っている私のroutes.rbファイルで

前述のネストされたリソース(つまり、Articles::CategoriesController)に使用されているコントローラと同じarticles/categoriesコントローラを使用して、これらのURLにアクセスすることによって:

どうすればいいですか?どのようにルータをコーディングする必要がありますか?


たぶん私はこの

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

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

のようにルータcollectionメソッドを使用して何かを行うことができますが、私はそれを行う方法がわかりません。

+0

あなたはほしいですか/articles/2 :/articles/categories/new。私はそれがtypoであることを確認するよう頼んでいます:) – felix

+0

@Felix - '/articles/categories/new'パスにアクセスし、' Articles :: CategoriesControllerの '' new'アクションです。 – 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'アクションを使用したいと思います。 '/articles/1/categories /'を使用して、コントローラで正しく処理します。 – Backo

関連する問題