2013-06-09 26 views
29

Trong ứng dụng 4 đường ray mới, tôi bị lỗi không cố định cho mô-đun. Các module được đặt tên ProcessBill và nằm trong thư mục lib/process_bill.rbĐường ray 4 hằng số không được khởi tạo cho mô-đun

console lỗi:

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

mã điều khiển:

class BillsController < ApplicationController 

    include ProcessBill 

lib/process_bill.rb

module ProcessBill 

Trả lời

54

Bạn đã thêm lib vào đường dẫn tự động tải chưa? Này là cần thiết trong Rails 3, tôi không chắc chắn nếu nó vẫn còn cần thiết cho Rails 4.

Hãy thử thêm này vào định nghĩa lớp trong config/application.rb -

config.autoload_paths += %W(#{config.root}/lib) 
3

Hãy thử thêm dòng này vào đầu bộ điều khiển của bạn:

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

Bạn có thể cũng chỉ là "require 'process_bill', như thư mục 'lib' đã có trên đường dẫn tải –

+6

cẩn thận, việc này sẽ tự động nạp lại! – reto

23

tôi đã vấn đề này quá với thư mục lib với Rails 5 và nó xuất hiện trong sản xuất nhưng không phát triển. Để khắc phục nó, bạn cần thêm thư mục lib vào eager_load_paths. Dưới đây là phần có liên quan từ application.rb tôi:

config.autoload_paths << "#{Rails.root}/lib" 
config.eager_load_paths << "#{Rails.root}/lib" 
+3

Bài viết này giải thích tại sao: http://collectiveidea.com/blog/archives/2016/07/22/solutions-to-potential -upgrade-problems-in-rails-5/ – lucke84

+1

nó cũng hoạt động trong Rails 4 –

1

này cũng sẽ làm việc trong Rails 5 tại tập tin application.rb của bạn:

config.autoload_paths << Rails.root.join('lib') 
    config.autoload_paths << Rails.root.join('lib/notifier') 
Các vấn đề liên quan