这是一个装饰者
应用程序/装饰/ campaign_decorator.rb
class CampaignDecorator < Draper::Decorator
delegate_all Campaign::Campaign
def created_at
helpers.content_tag :span, class: 'time' do
object.created_at.strftime("%a %m/%d/%y")
end
end
def custom_method
'hello there!'
end
end
当我致电CampaignDecorator.custom_method
时,它找不到该方法。此外,CampaignDecorator.first.created_at
会返回未格式化的日期。
任何人都可以告诉我我错过了什么吗?
答案 0 :(得分:5)
这不是你如何使用Draper Decorator。
首先要做的事情:
CampaignDecorator.custom_method
尝试在CampaignDecorator类中查找名为custom_method
的类方法。这绝对不是你想要的。
CampaignDecorator.first.created_at
查找CampaignDecorator
类的对象并在那里运行(没有记录,因此first
返回nil)
您需要做的是实际装饰您的模型。检查documentation。
首先需要为模型添加功能:
class CampaignDecorator
decorates :campaign
end
简而言之,你可以做到
@campaign = Campaign.first.decorate
@campaigns = CampaignDecorator.decorate_collection(Campaign.all)
@campaigns = Campaign.scoped.decorate