[英]uninitialized constant Admin::ModeratorsController::ModeratorInteractor
嗨,我正在使用 ruby-2.3.0 和 rails 4 进行 RoR 项目。我正在尝试从 controller 调用交互器方法。 我的 controller 位于 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
。 我还尝试包括交互器:-
include Interactor
请帮助如何解决它。在此先感谢。
您需要将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
首先,您需要在您的ModeratorInteractor
中include Interactor
,还需要定义一个call
方法,而不是find_abc
,它将不起作用,它会抛出undefined method
的错误,所以您的最终交互器将如下所示
# frozen_string_literal: true
class ModeratorInteractor
include Interactor
def self.call
params = context.params
end
end
你会称它为
ModeratorInteractor.call(params: params)
瞧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.