我得到了一个 - 说Actor
- 模型以及带有经典show
动作的相对控制器,它显示了演员的完整列表以及有关他们的各种信息(例如他们已加星标的电影,等等)。
现在,我想要检索我的show
操作所需的完全相同的信息,但要以不同的风格显示它们,因为这部分 - 比如说_search_results
- 用于创建一个小的“搜索为你”类型的框。
想象一下show
操作作为Finder窗口显示文件夹和文件,将我的部分视为在Spotlight上搜索内容时出现的下拉列表。
当然我希望尽可能保持DRY,所以我想知道这样做的最佳做法是什么,而我的actors_controller
几乎不会重复代码,因为部分所需的信息是与show
操作已为show
视图生成的完全相同。
感谢。
编辑(NB)当然我希望从控制器内部渲染部分,因为我不希望我的所有应用程序布局都显示在搜索结果框中!
答案 0 :(得分:2)
关于这一点的经典建议是将信息组件粘贴在模型中,因此可以通过多个控制器操作访问它而无需重复。命名范围等使这很容易做到。
http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model
答案 1 :(得分:0)
您想要使用Presenter。它是一个类,它封装了为您正在使用的模板/部分准备数据所需的所有逻辑。然后,您可以在渲染模板之前在控制器中创建该演示者的实例。以下是关于Presenter模式以及何时使用它的好文章。
http://kpumuk.info/ruby-on-rails/simplifying-your-ruby-on-rails-code/