2015-09-03 2 views
0

Я создал беспокойство в контроллерах/проблем под названием reports.rbв концерне методы класса контроллера возвращающиеся NoMethodError

В ней я создал модуль .. Это методы класса выглядит следующим образом

module Reports 
    extend ActiveSupport::Concern 

included do 
    require 'peddler' 
    require 'csv' 
end 

module ClassMethods 

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

я включил эту проблему в моем контроллере Merchants, как это:

class MerchantsController < ApplicationController 
    include Reports 

А затем попытался вызвать метод report_details в действии на контроллере Merchants как так:

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) 

Но я получаю NoMethodError когда я пытаюсь .. Я также попытался:

me.report_details(xx,xxx,xxxx) 

И получил тот же NoMethodError

Что я сделал не так?

+0

Вы перезапустили Rails? –

ответ

1

Попробуйте

MerchantController.report_details(xx,xxx,xxxx) 

Но вы должны лучше включить эту проблему в модели.

+0

Я попробовал MerchantController.report_details, но это не сработало. НО Я включил проблему в модель Merchant, а затем использовал Merchant.report_details, и это сработало! Спасибо много! – ToddT

+0

@ToddT, по вашему первоначальному вопросу вы сказали, что вы включили его в контроллер, поэтому Алекс прав, если вы делаете это на своей модели, конечно, что меняется. Подумайте о принятии ответа Алекса. – Leito