2013-06-09 22 views
29

için başlatılmamış sabit 4 Yeni bir rayda 4 bir modül için bir habersiz sabit bir hata alıyorum. Modül ProcessBill adlandırılır ve lib/process_bill.rbRaylar Modül

konsol hatası bulunur:

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

kontrolör kodu:

class BillsController < ApplicationController 

    include ProcessBill 

lib/process_bill.rb

module ProcessBill 

cevap

54

Otomatik yükleme yolunuza lib eklediniz mi? hala Raylar için gerekli eğer bu Rails 3 gerekliydi, emin değilim 4.

deneyin config/application.rb sınıf tanımına bu ekleme - Bu sorun lib dizinine ile çok

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

Bu satırı kontrolörünüzün üstüne eklemeye çalışın:

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

olarak, İşte benim application.rb alakalı parçasıdır 'lib' dizini zaten yükleme yolunda. –

+6

dikkatli olun, bu otomatik olarak yeniden yüklemeyi öldürür! – reto

23

ben vardı Rails 5 ile ve üretimde ortaya çıktı, ancak geliştirme aşamasında değil. Düzeltmek için lib dizini eager_load_paths dosyasına eklemeniz gerekir.

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

Bu makale nedenini açıklıyor: http://collectiveidea.com/blog/archives/2016/07/22/solutions-to-potential Yükseltme-sorunları-in-raylar-5/ – lucke84

+1

da Rails 4'te çalışır –

1

Bu aynı zamanda application.rb dosyasına Raylar 5 çalışacak: Ayrıca sadece " 'process_bill' gerektiren yapabilirim

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