gpt4 book ai didi

ruby-on-rails - RoR : NameError: Uninitialized constant (Service)

转载 作者:行者123 更新时间:2023-12-04 22:30:48 24 4
gpt4 key购买 nike

这是我在 SO 的第一个问题 :)
我对 RoR 很陌生,我试图了解 PINGOWebApp,您可以在这里找到它 https://github.com/PingoUPB/PINGOWebApp .
他们在 app/services/(例如 number_question.rb、text_question.rb)中的不同类型的问题中指定了他们的“问题”模型(app/models/question.rb),所有这些都继承自 app/services/generic_question.rb:

class GenericQuestion < Delegator

def initialize(question)
super
@question = question
end

def __getobj__ # required
@question
end

def __setobj__(obj)
@question = obj # change delegation object
end

def to_model
@question.to_model
end

def has_settings?
false
end

def add_setting(key, value)
@question.settings ||= {}
@question.settings[key.to_s] = value.to_s
end

def self.model_name
Question.model_name
end

def self.reflect_on_association arg
Question.reflect_on_association arg
end

alias_method :question, :__getobj__ # reader for survey

end

这是我的第一个问题:
1) 由于没有服务生成器,他们必须手动创建 app/service/中的所有 ruby​​ 文件,不是吗?或者还有什么其他方式?
2)我fork了项目,手工添加了另一个服务,叫dragdrop_question.rb,集成到question_controller.rb中:
class QuestionsController < ApplicationController
...
def new
@question_single = SingleChoiceQuestion.new.tap { |q| q.question_options.build }
@question_multi = MultipleChoiceQuestion.new.tap { |q| q.question_options.build }
@question_text = TextQuestion.new
@question_number = NumberQuestion.new #refactor this maybe?
@question_dragdrop = DragDropQuestion.new.tap { |q| q.answer_pairs.build }
end
...
end

我还调整了 View 并在本地进行了测试。我在/questions/new 遇到 NameError
未初始化的常量 QuestionsController::DragDropQuestion。
如果我添加
require_dependency "app/services/dragdrop_question.rb"

到 question_controller.rb 错误消失了,但他们没有这样做。那么他们如何将服务引入 Controller 呢?

提前感谢您的任何帮助,尤其是教程或书籍引用解释 Controller -模型- View -服务模式的内容。

最佳答案

尽量遵循正确的命名约定,你的类名是 DragDropQuestion因此预期的文件名是 drag_drop_question.rb .

关于ruby-on-rails - RoR : NameError: Uninitialized constant (Service),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com