我刚刚重命名了一个班级,现在我的应用程序打破了
NoMethodError in MailchimpController#campaigns
undefined method `new' for MailchimpHelper:Module`
尝试实例化此类时。该类名为mailchimp_wrapper.rb
,现在名为mailchimp_helper.rb
。缩短版本看起来像这样,我显然将名称从MailchimpWrapper
更改为MailchimpHelper
:
class MailchimpHelper
def initialize
@api_key = "jgkgkgkljg"
@mc_user = "lkjlkjlkjlj"
@api_endpoint = 'https://us5.api.mailchimp.com/3.0/'
end
def get_campaigns
campaigns
end
end
MailchimpController
看起来像这样:
class MailchimpController < ApplicationController
def campaigns
mailchimp = MailchimpHelper.new
campaigns_hash = mailchimp.get_campaigns
@campaigns = campaigns_hash["campaigns"]
end
end
重命名课程时我还需要做些什么吗?
它在某种程度上似乎并不将MailchimpHelper
视为一个类,而是将其视为错误消息所暗示的模块。但我不知道从哪里开始......
答案 0 :(得分:1)
将helper MailchimpHelper
添加到MailchimpController
类。
class MailchimpController < ApplicationController
helper MailchimpHelper
def campaigns
mailchimp = MailchimpHelper.new
campaigns_hash = mailchimp.get_campaigns
@campaigns = campaigns_hash["campaigns"]
end
end
编辑
或者,您可以尝试将MailchimpHelper
课程更改为module
。
将其命名为mailchimp.rb
。
module Mailchimp
# no need to an initialize with modules
@api_key = "jgkgkgkljg"
@mc_user = "lkjlkjlkjlj"
@api_endpoint = 'https://us5.api.mailchimp.com/3.0/'
def get_campaigns
campaigns
end
end
然后,在MailchimpController
中,您需要添加include Mailchimp
。当你想调用模块方法时,你不需要实例化一个新类。所以你的示例控制器看起来像这样:
class MailchimpController < ApplicationController
include Mailchimp
def campaigns
campaigns_hash = get_campaigns
@campaigns = campaigns_hash["campaigns"]
end
end