2010-08-19 37 views
0

我的路线应该是这样的:这些导轨路径应该如何看起来像?

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

这是什么我在这里做错了?

回答

2

有两件事情会在这里:

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

这三个在一起做一样的东西:

<%= 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] %> 
+0

非常感谢,mattyven! – Jan 2010-08-19 11:19:22

+0

只是还有一件事 - 是否有一个语法来做其他动作的最短版本,比如编辑? – Jan 2010-08-19 11:31:22

+0

<%= link_to'Show',[a.category,a]%>给出与<%= link_to'Edit',[a.category,a],:action =>“edit”%>相同的结果,我从文档中查找 – Jan 2010-08-19 11:42:46

相关问题