使用具有继承资源的演示器



我在Rails应用程序中使用了相当多的优秀的Inherited Resources gem,但是每当我想使用演示器时,我都会退回到手工编写控制器。

是否有一个好的,干净的解决方案来结合继承资源与像Draper或delegate_presenter?

delegate_presenter的作者。

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

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

如果你的模板来自一个共同的来源(比如LegalTodoTodo的子类,由于一些未知的原因),并且你共享模板,你可以在你的模板中这样做:

presenter = Present(resource)

resource—至少根据inherited_resources自述文件—是您正在查看的当前资源(即@todo@legal_todo)的帮助器

Present()将查看对象的类并实例化适当的呈现者对象。resource返回Todo对象,TodoPresenter; resource返回LegalTodo对象,LegalTodoPresenter

然后,假设这些演示者是多态的,演示者将让您抽象差异("LegalTodo的名称是描述+沉积编号,但Todo的项目名称应该只是描述")-即使您共享视图!

最新更新