Rails 4模块的未初始化常量

时间:2013-06-09 08:06:47

标签: ruby-on-rails

在新的rails 4应用程序中,我得到一个模块的未初始化的常量错误。该模块名为ProcessBill,位于lib / process_bill.rb

控制台错误:

ActionController::RoutingError (uninitialized constant BillsController::ProcessBill):

控制器代码:

class BillsController < ApplicationController

  include ProcessBill

LIB / process_bill.rb

module ProcessBill

4 个答案:

答案 0 :(得分:63)

您是否在自动加载路径中添加了lib?这在Rails 3中是必要的,我不确定它是否仍然需要Rails 4。

尝试将其添加到config/application.rb -

中的类定义中
    config.autoload_paths += %W(#{config.root}/lib)

答案 1 :(得分:33)

我在使用Rails 5的lib目录时遇到了这个问题,它出现在生产中,但没有在开发中。要修复它,您需要将lib目录添加到eager_load_paths。以下是我的application.rb中的相关部分:

Resolving Prism.Unity.Navigation.UnityPageNavigationService,(none)

  Calling constructor Prism.Unity.Navigation.UnityPageNavigationService(Microsoft.Practices.Unity.IUnityContainer container)
.

答案 2 :(得分:3)

尝试将此行添加到控制器的顶部:

require "#{Rails.root}/lib/process_bill.rb"

答案 3 :(得分:3)

这也适用于您的application.rb文件中的Rails 5:

    config.autoload_paths << Rails.root.join('lib')
    config.autoload_paths << Rails.root.join('lib/notifier')