我四处搜索 - 阅读了一堆教程,文章和论坛帖子,观看了一些截屏视频,我发现了一些接近我正在尝试做的事情的例子(特别是{{3关于嵌套模型表单的ep 196和ep 196,但不完全正确。
我有两个需要评论的模型(Podcast和BlogPost),我有一个与两者都多态相关的Comment模型。上面的railscast有一个非常相似的例子(ep 154),但Ryan使用了一整套嵌套路线,所以有特定的模板用于添加和编辑注释。我想要做的是在Podcast或BlogPost页面上显示评论列表,并在底部显示添加评论表单。我不需要单独的添加模板/路由,我不需要编辑,只需要删除。
这是一个非常常见的网络设计,但我找不到专门针对这种模式的Rails示例。这是我目前的理解:
我当然需要创建和删除操作的路由,但没有与之关联的模板。我也猜测正确的方法是创建一个可以包含在Podcast和BlogPost节目模板底部的部分内容。部分的逻辑名称在我看来像_comments.html.haml。我知道将对象传递给部分的常见约定是在模板之后命名,但调用对象'comments'似乎与我的用例不匹配,因为我真正需要传递的是可注释对象(Podcast或BlogPost) )。所以,我想我会使用locals选项进行渲染部分调用? (:commentable => @podcast)。
在partial中,我可以调用commentable.comments来获取注释集合,使用第二个部分呈现(这次使用传统的用例,调用partial _comment.html.haml),然后创建一个提交的表单到......什么? REST方面,它应该是一个POST集合,这将是/ podcast | blogpost /:id / comments,我认为它的助手是podcast_comments_path(podcast),如果它是一个播客 - 不知道该怎么办因为我正在使用多态注释。这将触发Comment.create操作,然后需要将其重定向回播客| blogpost path / podcast | blogpost /:id。
这有点令人难以招架,这就是为什么我真的希望找到专门实现此设计的截屏视频或示例。
答案 0 :(得分:15)
我弄明白了,实现了它,测试了它,然后最后写了一个教程解释如何为其他人做这个:
http://wiki.github.com/hcatlin/make_resourceful/embedded-nested-polymorphic-comments