ClassMethods в Controller Concern връща NoMethodError

Създадох загриженост в контролери/загрижености, наречена 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

Включих това безпокойство в моя контролер на 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

Какво сбърках?


person ToddT    schedule 03.09.2015    source източник
comment
Рестартирахте ли Rails?   -  person steve klein    schedule 03.09.2015


Отговори (1)


Опитайте тази

MerchantController.report_details(xx,xxx,xxxx)

Но по-добре е да включите това безпокойство в модела.

person Alex Tonkonozhenko    schedule 03.09.2015
comment
Опитах MerchantController.report_details, но не работи.. НО включих проблема в модела на Merchant и след това използвах Merchant.report_details и това проработи!! Благодаря ти много! - person ToddT; 03.09.2015
comment
@ToddT, във вашия първоначален въпрос казахте, че сте го включили в контролера, така че Алекс е прав, ако го направите на вашия модел, разбира се, това се променя. Помислете дали да приемете отговора на Алекс. - person Leonel Galán; 03.09.2015