【问题标题】:What is the best practice for rendering the same thing in two different ways?以两种不同方式渲染同一事物的最佳实践是什么?
【发布时间】:2011-02-23 20:21:03
【问题描述】:

我有一个 - 比如说 Actor - 模型和具有经典 show 动作的相关控制器,该动作显示演员的完整列表和有关他们的各种信息(例如他们出演的电影等)。

现在,我想检索我的 show 操作所需的完全相同的信息,但要以不同样式显示它们,因为这个部分 - 比如 _search_results - 必须用于创建一个小的“输入时搜索”框。

show 操作想象成一个显示文件夹和文件的 Finder 窗口,而我的部分则想象成当您在 Spotlight 上搜索某些内容时出现的下拉列表。

当然,我希望尽可能保持 DRY,所以我想知道这样做的最佳做法是什么,同时几乎不重复我的 actors_controller 中的代码,因为部分所需的信息正是与 show 操作已经为 show 视图生成的操作相同。

谢谢。

编辑(注)当然我希望从控制器内部呈现部分,因为我不希望我的所有应用程序布局都显示在搜索结果框中!

【问题讨论】:

    标签: ruby-on-rails ruby model-view-controller controller dry


    【解决方案1】:

    对此的经典建议是将信息集合粘贴在模型中,以便多个控制器操作可以访问它而不会重复。命名范围之类的东西使这很容易做到。

    http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model

    【讨论】:

    【解决方案2】:

    您想使用演示者。它是一个封装了为您正在使用的模板/部分准备数据所需的所有逻辑的类。然后,您可以在渲染模板之前在控制器中创建该演示者的实例。这是一篇关于 Presenter 模式以及何时使用它的好文章。

    http://kpumuk.info/ruby-on-rails/simplifying-your-ruby-on-rails-code/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2014-07-14
      • 1970-01-01
      相关资源
      最近更新 更多