2

我正在使用 Ruby on Rails v3.2.2,我想为嵌套资源使用复数名称。也就是说,在我的config/routes.rb我有(注意:“类别”和“文章”是示例资源):

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.rbso 中的语句以生成以下用于“部分”的复数名称的路由器(也就是说,我想分别使用/而不是/ ):category_articlecategories_articlecategories_articlescategory_articlecategory_articles

$ 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)  
4

1 回答 1

0

如果您对提供的助手不满意,那么您可以使用魔法:

<%= 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

可以使用完全相同的方法来指定帮助程序的:url选项form_for

我希望你明白了!

PS 注意使用类(like Article)表示您想查看所有记录,使用模型实例(like @article)表示您将要看到一篇文章。

于 2012-04-22T06:42:10.333 回答