您好我正在使用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
请帮忙解决问题。谢谢。
答案 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