大家好。在我的第一个Rails应用程序上工作。

我到处搜索-阅读了大量的教程,文章和论坛帖子,观看了一些屏幕录像,并且发现了一些与我想做的事情很接近的示例(尤其是http://railscasts.com/episodes/154-polymorphic-association和ep 196)有关嵌套模型的形式),但不完全相同。

我有两个需要评论的模型(Podcast和BlogPost),并且我有一个与这两者多态相关的Comment模型。上面的railscasts有一个非常相似的示例(ep 154),但是Ryan使用了一整套嵌套的路线,因此有用于添加和编辑注释的特定模板。我想做的是在Podcast或BlogPost页面上显示评论列表,并在底部显示“添加评论”表单。我不需要单独的添加模板/路由,也不需要编辑功能,只需删除即可。

这是Web上很常见的设计,但是我找不到专门关于此模式的Rails示例。这是我目前的理解:

当然,我需要用于创建和删除操作的路由,但是没有与之相关的模板。我还猜测正确的方法是创建一个可以包含在Podcast和BlogPost显示模板底部的部分。在我看来,局部的逻辑名称类似于_comments.html.haml。我知道让对象传递给局部对象是模板的惯例,但是调用对象“ comments”似乎与我的用例不符,因为我真正需要传递的是可注释对象(Podcast或BlogPost )。因此,我想我将使用locals选项进行渲染局部调用? (:commentable => @podcast)。

在部分内部,我可以调用commentable.comments来获取注释集合,并使用第二个部分进行渲染(这次是在常规用例中,调用部分_comment.html.haml),然后创建一个提交到的表单。 。 什么?在REST方面,它应该是集合的POST,它应该是/ podcast | blogpost /:id / comments,我认为它的帮助者是podcast_comments_path(podcast)(如果它是播客)-不确定该怎么做,因为我使用的是多态注释。这将触发Comment.create操作,然后需要将其重定向回podcast | blogpost路径/ podcast | blogpost /:id。

这一切都令人不知所措,这就是为什么我真的希望找到专门实现此设计的截屏视频或示例。

最佳答案

我弄清楚了,实现了它,对其进行了测试,然后最终编写了一个教程来解释如何为其他人做到这一点:

https://github.com/hcatlin/make_resourceful/wiki/embedded-nested-polymorphic-comments

10-04 19:39