我在Rails应用程序中使用了相当多的优秀的Inherited Resources gem,但是每当我想使用演示器时,我都会退回到手工编写控制器。
是否有一个好的,干净的解决方案来结合继承资源与像Draper或delegate_presenter?
delegate_presenter
的作者。
delegate_presenter
应该与inherited_resources
一起工作。现在我还没有在项目中实际使用inherited_resources,所以很多都是来自自述文件。
我总是在视图中创建演示者对象:todo_present = Present(@todo)
,例如。
如果你的模板来自一个共同的来源(比如LegalTodo
是Todo
的子类,由于一些未知的原因),并且你共享模板,你可以在你的模板中这样做:
presenter = Present(resource)
resource
—至少根据inherited_resources自述文件—是您正在查看的当前资源(即@todo
或@legal_todo
)的帮助器
Present()
将查看对象的类并实例化适当的呈现者对象。resource
返回Todo
对象,TodoPresenter
; resource
返回LegalTodo
对象,LegalTodoPresenter
。
然后,假设这些演示者是多态的,演示者将让您抽象差异("LegalTodo
的名称是描述+沉积编号,但Todo
的项目名称应该只是描述")-即使您共享视图!