我在Rails应用程序中使用了很好的继承资源gem,但每当我想使用演示者时,我都会手工编写控制器。
是否有一个很好的,干净的解决方案,用于将Inherited Resources与Draper或delegate_presenter相结合?
答案 0 :(得分:1)
此处delegate_presenter
的作者。
delegate_presenter
应与inherited_resources
一起使用。现在我还没有在项目中使用inherited_resources,因此很多内容都来自自述文件。
我总是在视图中创建presenter对象:todo_present = Present(@todo)
,例如。
如果您有来自公共来源的模板(例如LegalTodo
是Todo
的子类,出于某些原因未知),并且您共享模板,则可以在模板中执行此操作:
presenter = Present(resource)
resource
- 至少根据inherited_resources自述文件 - 是您查看的当前资源的帮助程序(因此,@todo
或@legal_todo
)
Present()
将查看对象的类并实例化相应的presenter对象。 TodoPresenter
如果resource
返回Todo
个对象,则LegalTodoPresenter
resource
如果LegalTodo
返回LegalTodo
个对象。
然后,假设这些演示者是多态的,演示者将让你抽象差异(“Todo
的名称是描述+存款号码,但{{1}}项目的名称应该只是描述“) - 即使你分享观点!