在一个新的rails 4应用程序中,我得到一个模块的未初始化的常量错误.该模块名为ProcessBill,位于lib/process_bill.rb中
控制台错误:
ActionController::RoutingError (uninitialized constant BillsController::ProcessBill):
Run Code Online (Sandbox Code Playgroud)
控制器代码:
class BillsController < ApplicationController
include ProcessBill
Run Code Online (Sandbox Code Playgroud)
LIB/process_bill.rb
module ProcessBill
Run Code Online (Sandbox Code Playgroud)
sev*_*cat 71
您是否已将lib添加到自动加载路径?这在Rails 3中是必要的,我不确定它是否仍然需要Rails 4.
尝试将其添加到类定义中config/application.rb-
config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)
小智 37
我在使用Rails 5的lib目录时遇到了这个问题,它出现在生产中但不在开发中.要修复它,您需要将lib目录添加到eager_load_paths.这是我的application.rb中的相关部分:
config.autoload_paths << "#{Rails.root}/lib"
config.eager_load_paths << "#{Rails.root}/lib"
Run Code Online (Sandbox Code Playgroud)
这也适用于您的 application.rb 文件中的 Rails 5:
config.autoload_paths << Rails.root.join('lib')
config.autoload_paths << Rails.root.join('lib/notifier')
Run Code Online (Sandbox Code Playgroud)
尝试将此行添加到控制器的顶部:
require "#{Rails.root}/lib/process_bill.rb"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27796 次 |
| 最近记录: |