2012-04-21 18 views
2

私はRuby on Rails v3.2.2を使用しています。ネストされたリソースに複数の名前を使用したいと思います。ネストされたリソースに複数の名前を使用するにはどうすればよいですか?

resources :categories do 
    resources :articles do 
    collection do 
     get 'one' 
     post 'two' 
     put 'three' 
    end 
    member do 
     get 'four' 
     post 'five' 
     put 'six' 
    end 
    end 
end 

上記の文以下を生成します:

$ rake routes 
    one_category_articles GET /categories/:category_id/articles/one(.:format)  articles#one 
    two_category_articles POST /categories/:category_id/articles/two(.:format)  articles#two 
three_category_articles PUT /categories/:category_id/articles/three(.:format) articles#three 
    four_category_article GET /categories/:category_id/articles/:id/four(.:format) articles#four 
    five_category_article POST /categories/:category_id/articles/:id/five(.:format) articles#five 
    six_category_article PUT /categories/:category_id/articles/:id/six(.:format) articles#six 
     category_articles GET /categories/:category_id/articles(.:format)   articles#index 
         POST /categories/:category_id/articles(.:format)   articles#create 
    new_category_article GET /categories/:category_id/articles/new(.:format)  articles#new 
    edit_category_article GET /categories/:category_id/articles/:id/edit(.:format) articles#edit 
     category_article GET /categories/:category_id/articles/:id(.:format)  articles#show 
         PUT /categories/:category_id/articles/:id(.:format)  articles#update 
         DELETE /categories/:category_id/articles/:id(.:format)  articles#destroy 
      categories GET /categories(.:format)        categories#index 
         POST /categories(.:format)        categories#create 
      new_category GET /categories/new(.:format)       categories#new 
      edit_category GET /categories/:id/edit(.:format)      categories#edit 
       category GET /categories/:id(.:format)       categories#show 
         PUT /categories/:id(.:format)       categories#update 
         DELETE /categories/:id(.:format)       categories#destroy 

私は文を変更したいそれが私config/routes.rb私が持っている(:「カテゴリ」と「記事」サンプル資源であるが、ノート)では、ので、私のconfig/routes.rb複数category_article「パート」のためだけ(それは私が使用したい、であると次のルーターを生成するcategories_article/あなたが提供するヘルパーに満足していない

$ rake routes 
# Note: I marked changes from the previous outputting with '=>'. 
=> one_categories_articles GET /categories/:category_id/articles/one(.:format)  articles#one 
=> two_categories_articles POST /categories/:category_id/articles/two(.:format)  articles#two 
=> three_categories_articles PUT /categories/:category_id/articles/three(.:format) articles#three 
=> four_categories_article GET /categories/:category_id/articles/:id/four(.:format) articles#four 
=> five_categories_article POST /categories/:category_id/articles/:id/five(.:format) articles#five 
=> six_categories_article PUT /categories/:category_id/articles/:id/six(.:format) articles#six 
=>  categories_articles GET /categories/:category_id/articles(.:format)   articles#index 
          POST /categories/:category_id/articles(.:format)   articles#create 
     new_category_article GET /categories/:category_id/articles/new(.:format)  articles#new 
     edit_category_article GET /categories/:category_id/articles/:id/edit(.:format) articles#edit 
      category_article GET /categories/:category_id/articles/:id(.:format)  articles#show 
          PUT /categories/:category_id/articles/:id(.:format)  articles#update 
          DELETE /categories/:category_id/articles/:id(.:format)  articles#destroy 
        categories GET /categories(.:format)        categories#index 
          POST /categories(.:format)        categories#create 
       new_category GET /categories/new(.:format)       categories#new 
       edit_category GET /categories/:id/edit(.:format)      categories#edit 
        category GET /categories/:id(.:format)       categories#show 
          PUT /categories/:id(.:format)       categories#update 
          DELETE /categories/:id(.:format) 
+0

あなたは2回考えましたか? 'category_articles'は、それぞれのヘルパーのためにカテゴリと記事を提供する必要があることを疑うことなく表示します。 'categories_articles'では混乱します。 – jdoe

+0

'resources:categories、:as => 'categories' do' – DanS

+0

@DanS - あなたのコードは期待どおりに動作しません。 – Backo

答えて

0

ならば、あなたは魔法を使用することができます:それぞれ代わりのcategory_article/category_articles

<%= link_to 'One', [:one, @category, Article] %> 
# /categories/123/articles/one 

<%= link_to 'Four', [:four, @category, @article] %> 
# /categories/123/articles/456/four 

<%= link_to 'Edit the article', [:edit, @category, @article] %> 
# /categories/123/articles/456/edit 

<%= link_to 'All articles for the category', [@category, Article] %> 
# /categories/123/articles 

を非常に同じアプローチを指定するために使用することができますform_forヘルパー用の:urlオプション

私はあなたがアイデアを持っていることを願っています!

P.S.すべてのレコードを表示し、モデルインスタンス(@articleなど)を使用して1つの記事を表示しようとしていることを指定するには、クラス(Articleなど)を使用することに注意してください。

関連する問題