【问题标题】:Using a presenter with Inherited Resources使用具有继承资源的演示者
【发布时间】:2011-12-13 19:14:58
【问题描述】:

我在我的 Rails 应用程序中大量使用了出色的 Inherited Resources gem,但每当我想使用演示器时,我都会退回到手动编写控制器。

有没有一个好的、干净的解决方案可以将继承的资源与 Draper 或 delegate_presenter 之类的东西结合起来?

【问题讨论】:

    标签: ruby-on-rails inherited-resources presenter


    【解决方案1】:

    delegate_presenter 的作者在这里。

    delegate_presenter 应该可以与inherited_resources 一起正常工作。现在我还没有在项目中实际使用过inherited_resources,所以很多内容只是来自自述文件。

    无论如何,我总是在视图中创建演示者对象:例如todo_present = Present(@todo)

    如果您有来自公共来源的模板(例如 LegalTodoTodo 的子类,出于某种未知原因),并且您共享模板,您可以在模板中执行此操作:

    presenter = Present(resource)

    resource - 至少根据inherited_resources 自述文件 - 是您正在查看的当前资源的助手(因此,@todo@legal_todo

    Present() 将查看对象的类并实例化适当的演示者对象。 TodoPresenter 如果resource 返回一个Todo 对象,LegalTodoPresenter 如果resource 返回一个LegalTodo 对象。

    然后,假设这些演示者是多态的,演示者会让你抽象出差异(“LegalTodo 的名称是描述 + 沉积编号,但 Todo 项目的名称应该只是描述” ) - 即使您分享观点!

    【讨论】:

      猜你喜欢
      • 2011-08-23
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多