一个分类可以有多篇文章,一个文章可以有多个评论
我定义的路由是这样的:
[code="ruby"]map.resources :categories,:shallow=>true do |category|
category.resources :articles do |article|
article.resources :comments
end
end[/code]
看那个:shallow=>true,可以使下面的article不用写在category后面,我新建文章的链接是new_article_path,但是浏览网页的时候,提示错误:
[code="ruby"]undefined local variable or method `new_article_path' for #ActionView::Base:0x49022a8[/code]
这样写可以:new_category_article_path(1)
但是在创建文章之前不知道分类的ID,请问这种情况应该怎么写创建新文章的连接~
谢咯~
[b]问题补充:[/b]
但是不加那个参数的话,会提示少一个参数,也会报错~
这里是错误代码:
[code="ruby"]new_category_article_url failed to generate from {:action=>"new", :controller=>"articles"} - you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: ["categories", :category_id, "articles", "new"] - are they all satisfied?[/code]
这个是用rake routes显示出来新建文章的路由:
[code="ruby"]new_category_article GET /categories/:category_id/articles/new {:action=>"new", :controller=>"articles"}[/code]
为什么让提示输入一个category_id。。。。
[b]问题补充:[/b]
好像不管把:shallow=>true加到哪层,在调用new方法那个路由上面,总是需要输入一个父资源的ID,可是new的时候怎么能知道父资源的ID呢~比如创建一篇文章,在new.html.erb那个页面出来之后才会选择分类~
[b]问题补充:[/b]
也就是说我可以在index那个方法里面,加上这个方法:
[code="ruby"]@category = Category.new[/code]
然后在index那个页面上的连接改为:
[code="ruby"]new_category_article_path(@category)[/code]
可是这样生成的连接ID那里是空的……难道非要我在创建之前指定一个category_id么?
[b]问题补充:[/b]
现在问题好像就是:如何显示所有分类的文章……
[b]问题补充:[/b]
现在是在new的方法里面,搜索第一个category的ID,然后传入,创建文章的时候,有一个select,选择分类,保存的时候select里面选择的分类会覆盖一开始那个分类ID,但是这样的话,虽然可以实现功能,但是地址栏是categories/1/articles/new,而且创建完了之后返回article首页的时候,也需要传入一个category的ID,用来显示哪个分类的文章,如果我想显示所有分类的文章,我还得传入一个ID,只是在action里面find的时候,不加入category_id的这个搜索条件,也是可以达到目的,但是地址栏仍然不好看,显示categories/2/articles
这个应该怎么解决呃~难道要单独写一个路由么?