从Draper Decorator渲染部分

时间:2013-05-24 16:13:19

标签: ruby-on-rails decorator draper

我有一个装饰器,它返回一个字符串或一个集合。

在我看来,我想显示这个装饰器方法的返回。

class MyDecorator < Draper::Decorator
  def stuff
    if condition
      'some string'
    else
      render model.some_collection
    end
  end
end

现在在我看来,我想渲染字符串,如果它是一个字符串,或渲染集合。

= my_object.stuff

很遗憾,我无法访问render内的Draper::Decorator方法。想法?

2 个答案:

答案 0 :(得分:7)

来自https://github.com/drapergem/draper#accessing-helpers

  

普通Rails助手仍然可用于许多任务。可以通过h方法

访问Rails提供的帮助程序和应用程序中定义的帮助程序

因此,将render替换为h.render,它应该可以正常工作。

答案 1 :(得分:2)

您可以在装饰器中包含Draper的Draper::LazyHelpers模块,以使用ActionView::Helpers和ActionView的其余部分,因为您一直拥有视图。