2011-05-01 80 views
0

我正在为我的应用程序开发一个留言板,并且它具有使所有工作都正常工作的典型三种资源:论坛,主题和帖子。该路线被定义为这样:使用多个资源创建留言板时遇到问题

resources :forums do 
    resources :topics do 
     resources :posts 
    end 
end 

主题已定义为嵌套资源职位,因为当你创建一个新的话题,将创建一个新的岗位,开始线头脱落。这样一切运作良好。但是我被困在主题的'显示'页面上。在该页面上,与任何留言板模型一样,在显示所有帖子后,底部会有一个表单添加新帖子/回复。一旦帖子的创建动作被触发,它将重定向回主题等。实现该形式是我绊倒了。

通常我会觉得这样的事情...

<%= form_for([@topic, @post]) do |f| %> 
    ... 
<% end %> 

...只有页面返回“未定义的方法`topic_posts_path”错误。这并不奇怪,因为查看rake路由会将此作为Posts的创建操作返回。

forum_topic_posts POST /forums/:forum_id/topics/:topic_id/posts(.:format)  {:controller=>"posts", :action=>"create"} 

想我会尝试<%=的form_for([@论坛,@topic,@post])做| F | %>在form_for中,但只是给我返回了同样的错误。我需要给它实际的路径,我给了<%= form_for:url => forum_topic_posts_url do | f | %>一个尝试,但它并不关心这一点。

谷歌搜索后,大多数论坛教程已过时或停止在主题页面添加新帖子表单,只显示我已经制定的几乎所有的东西。

我能够出现的唯一的其他事情表明不会将资源嵌套到三层或更多层,但是没有达到“为什么”,更不用说提供一个合适的替代方案。此外,上面的路径路径似乎是这种行为最合乎逻辑的路径。

那么我该如何完成在这种设置中的主题显示页面上使Post表单工作?

回答

0

当您尝试“form_for([@ forum,@topic,@post])”时,您已在控制器中设置了@forum变量?

+0

(facepalm)哦,男人,我不能相信我忽略了这一点。你是对的。非常感谢。 – Shannon 2011-05-01 18:15:42