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

时间:2011-10-24 01:02:21

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

我在Rails应用程序中使用了很好的继承资源gem,但每当我想使用演示者时,我都会手工编写控制器。

是否有一个很好的,干净的解决方案,用于将Inherited Resources与Draper或delegate_presenter相结合?

1 个答案:

答案 0 :(得分:1)

此处delegate_presenter的作者。

delegate_presenter应与inherited_resources一起使用。现在我还没有在项目中使用inherited_resources,因此很多内容都来自自述文件。

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

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

presenter = Present(resource)

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

Present()将查看对象的类并实例化相应的presenter对象。 TodoPresenter如果resource返回Todo个对象,则LegalTodoPresenter resource如果LegalTodo返回LegalTodo个对象。

然后,假设这些演示者是多态的,演示者将让你抽象差异(“Todo的名称是描述+存款号码,但{{1}}项目的名称应该只是描述“) - 即使你分享观点!