未初始化的常量Admin :: ModeratorsController :: ModeratorInteractor

时间:2018-05-29 04:28:41

标签: ruby-on-rails interactors

您好我正在使用ruby-2.3.0和rails 4进行RoR项目。我试图从控制器调用一个交互方法。我的控制器位于Admin目录中,如下所示:

class Admin::ModeratorsController < Admin::ApplicationController
  include Interactor

  def index
    ModeratorInteractor.find_abc(params)
  end
end

我的交互者是: -

# frozen_string_literal: true

class ModeratorInteractor
  def self.find_abc(params)
    User.all
  end
end

当我运行我的代码时出现错误uninitialized constant Admin::ModeratorsController::ModeratorInteractor。 我也尝试包括Interactor: -

include Interactor

请帮忙解决问题。谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将ModeratorInteractor定义为module以将其包含在您的控制器中:

module ModeratorInteractor
  def self.find_abc(params)
    User.all
  end
end

然后您需要确保正确加载模块:

# in application.rb
config.autoload_paths += %W("#{config.root}/lib") # path to your module

或者您也可以使用require代替autoload_paths

require "#{Rails.root}/lib/modeator_interactor"

然后在您的控制器中,您可以包含它:

include ModeratorInteractor