rails2.2.2嵌套资源路径问题

一个分类可以有多篇文章,一个文章可以有多个评论

我定义的路由是这样的:
[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

这个应该怎么解决呃~难道要单独写一个路由么?

再写一个路由,用户如果想浏览全部文章,就用/articles
如果想通过分类,再浏览articles,就用现在的路由

-但是地址栏是categories/1/articles/new-

很正常,因为文章可以有多个分类,同一个文章可以是category1或者category3.当然你也可以用/articles的新路由来创建文章

执行rake routes 查找相应指令,然后在后面加上"_path”

创建新文章怎么能加id? 后面的括号去掉

然后在相应的create action 中 用session或者用已在filter中创好的@category变量进行创建新文章

@category = Category.new

你save了吗

在网页上用一个select——tag 或者多个category连接——来读取数据库中已有的@category,要不然新创一个@category,save后

再用new_category_article_path(@category),你试试