gpt4 book ai didi

ruby-on-rails - 装饰实例上未定义的方法

转载 作者:行者123 更新时间:2023-12-04 03:54:20 26 4
gpt4 key购买 nike

这是一个装饰器

应用程序/decorators/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 返回未格式化的日期。

谁能告诉我我错过了什么吗?

最佳答案

这不是使用 Draper Decorator 的方式。

首先要做的事情:

  • CampaignDecorator.custom_method 尝试在 CampaignDecorator 类中查找名为 custom_method 的类方法。这绝对不是你想要的。

  • CampaignDecorator.first.created_at 查找 CampaignDecorator 类的对象并在那里进行操作(其中没有记录,因此 first 返回无)

您需要做的实际上是装饰您的模型。检查documentation为此。

您首先需要将功能添加到模型中:

class CampaignDecorator
decorates :campaign
end

简而言之,你可以做到

@campaign = Campaign.first.decorate

@campaigns = CampaignDecorator.decorate_collection(Campaign.all)

@campaigns = Campaign.scoped.decorate

关于ruby-on-rails - 装饰实例上未定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25163744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com