0

当我尝试运行我的应用程序时,出现以下错误:

uninitialized constant RegistrationsController::User_serial

在我的 config/application.rb 中,我有:

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

在我的 registrations_controller.rb 中,我有以下内容:

class RegistrationsController < Devise::RegistrationsController
  ........

def create
    @user = User.new(params[:user])

    user_serial_local = User_serial.new #initialize class defined in lib/my_tools.rb
    date_time_local = Date_formatter.new
    ......

在 lib/my_tools.rb 中,我定义了一些类:

class User_serial
  def self.calculate(first,last)
    first_3 = first[0..2]
    last_4 = last[0..3]
    time = Time.now.to_i
    return first_3 + last_4 + time.to_s
  end 
end

class Date_formatter
  def self.datetime
    return Time.now.strftime("%Y-%m-%d %H:%M:%S")
  end
end

有很多关于覆盖类的引用,以及有关如何确保包含放在 lib 文件夹中的任何内容的说明(在我的代码中遵循)。为什么我会收到错误消息?

4

1 回答 1

1

为了让 Rails 的魔法加载工作,它需要能够仅根据类名找到定义类/模块的文件。

这反过来意味着要遵守 rails 的命名约定,并将内容放在 rails 期望的地方:UserSerial 应该在 user_serial.rb 中定义。您可能可以让 User_serial 作为类名工作,但 rails 永远不会在 my_tools.rb 中查找该类。

于 2012-05-23T20:07:02.800 回答