这些导轨路径应该如何?

时间:2010-08-19 02:22:14

标签: ruby-on-rails ruby-on-rails-3

我的路线应如下所示:

    >rake routes

                      GET    /categories/:category_id/articles(.:format)          {:controller=>"articles", :action=>"index"}
    category_articles POST   /categories/:category_id/articles(.:format)          {:controller=>"articles", :action=>"create"}
 new_category_article GET    /categories/:category_id/articles/new(.:format)      {:controller=>"articles", :action=>"new"}
                      GET    /categories/:category_id/articles/:id(.:format)      {:controller=>"articles", :action=>"show"}
                      PUT    /categories/:category_id/articles/:id(.:format)      {:controller=>"articles", :action=>"update"}
     category_article DELETE /categories/:category_id/articles/:id(.:format)      {:controller=>"articles", :action=>"destroy"}
edit_category_article GET    /categories/:category_id/articles/:id/edit(.:format) {:controller=>"articles", :action=>"edit"}
                      GET    /categories(.:format)                                {:controller=>"categories", :action=>"index"}
           categories POST   /categories(.:format)                                {:controller=>"categories", :action=>"create"}
         new_category GET    /categories/new(.:format)                            {:controller=>"categories", :action=>"new"}
                      GET    /categories/:id(.:format)                            {:controller=>"categories", :action=>"show"}
                      PUT    /categories/:id(.:format)                            {:controller=>"categories", :action=>"update"}
             category DELETE /categories/:id(.:format)                            {:controller=>"categories", :action=>"destroy"}
        edit_category GET    /categories/:id/edit(.:format)                       {:controller=>"categories", :action=>"edit"}

但每当我尝试使用文章时,除了使用以外的任何东西 new_category_article_path,

<%= link_to 'Show', categories_article %>

我明白这个例外:

undefined local variable or method 'categories_article' for #<#<Class:0x00000102ce5768>:0x00000102ce3a80>

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

这里发生了几件事:

  1. 没有定义名为“categories_article”的路线。您可能正在寻找“category_articles”或“category_article”。
  2. 对于“show”操作,您需要指定要显示的对象的ID。在这种情况下,您还需要指定父ID(category_id)
  3. 当按名称引用这些路线时,您需要在末尾添加“_path”或“_url”。
  4. 这三个结合起来就像:

    <%= link_to 'Show', category_articles_path(:category_id => category.id) %>
    

    <%= link_to 'Show', category_article_path(:category_id => category.id, :id => article.id) %>
    

    或者更短:

    <%= link_to 'Show', [category, article] %>