【问题标题】:Where to put helper class [closed]在哪里放置助手类[关闭]
【发布时间】:2014-08-09 14:32:30
【问题描述】:

在我的应用程序中,我想添加一个名为 Prototyp 的辅助类:

class Prototyp
    def initialize
        ......
        @fields = JSON.parse('{' + arr.join(',') + '}')
    end

    def correct(word)
        @fields.each do |key, array|
            word.gsub! "\\" + key , [array.hex].pack("U")
        end
        return word
    end
end

我先把它添加到文件夹liblib\Prototyp.rb

然后我尝试在模型类中调用它:

class Person < ActiveRecord::Base
    def self.create(file)
        pro = Prototyp.new
        ...

但不知何故我得到了这个错误:

NameError: uninitialized constant Person::Prototyp
C:/Sites/blazing/app/models/person.rb:3:in `create'

我做错了什么?我该如何解决这个问题?谢谢

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4


    【解决方案1】:

    您的类名为 Prototype(带有尾随 e),但调用和文件名为“Prototyp”。

    还要检查你在 application.rb 中的配置,它应该包含如下一行:

    config.autoload_paths += Dir["#{config.root}/lib/**/"]
    

    这告诉 Rails 加载 lib 文件夹下的文件。

    【讨论】:

    • 抱歉,我为这个问题更改了班级名称并犯了这个错误!但问题是一样的
    • 对不起,这似乎不起作用!