Controller Concern中的ClassMethods返回NoMethodError

时间:2015-09-03 14:04:54

标签: ruby-on-rails nomethoderror activesupport-concern

我在控制器/关注点中创建了一个名为reports.rb

的问题

在其中我创建了ClassMethods模块..看起来像这样

module Reports
  extend ActiveSupport::Concern

included do
    require 'peddler'
    require 'csv'
end

module ClassMethods

    def report_details(token, marketplace_id, merchant_id)
      #...
    end

我将此问题包含在我的商家控制器中,如下所示:

class MerchantsController < ApplicationController
  include Reports

然后尝试在商家控制器上的操作中调用report_details方法,如下所示:

def pull_from_amazon
    me = Merchant.find(params[:merchant_id])
    marketplace = me.marketplace
    token = me.token
    Merchant.report_details(token, marketplace, params[:merchant_id])
    redirect_to root_path
end

根据这篇文章Rich on Rails,我应该可以致电:

Merchant.report_details(xx,xxx,xxxx)

但是当我尝试时我得到NoM​​ethodError ..我也试过了:

me.report_details(xx,xxx,xxxx)

得到了相同的NoMethodError

我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个

MerchantController.report_details(xx,xxx,xxxx)

但你应该在模型中更好地考虑这个问题。