我有一个关于控制器操作之间代码重用的问题。我认为这是一个相当标准的情况,所以我对 Rails 的最佳实践很感兴趣。
假设我有一个films
具有相应 的资源,该资源具有由FilmsController
提供的嵌套资源。嵌套资源可以使用其和操作自行呈现。但是,也应该可以渲染嵌入在相应电影页面中的评论。comments
CommentsController
index
show
现在,问题来了,从CommentsController
内部重用代码的最佳方法是什么FilmsController.show
?
1)强制CommentsController.index
渲染为字符串,然后将其以变量形式传递给电影视图?
或者2)CommentsController.index
直接在电影视图中调用作为一种“部分”,从那里执行数据库查询?
或者3)创建一个CommentsController
负责数据库处理的单独方法,从两者调用它,CommentsController.index
并FilmsController.show
在这两个地方使用相应的视图?
对我来说,选项 1) 和 2) 似乎有点混乱,而 3) 不是模块化的,并且涉及一些代码重复。有没有更好的方法来实现这一点?
非常感谢!