如果config.eager_load = false,则获取未初始化常量NHLSDecorator的错误

时间:2019-05-17 04:30:10

标签: ruby-on-rails-4

我是Rails的新手,正在研究Rails 4应用程序。在我的development.rb中,

config.cache_classes = false 
config.eager_load = false 

这是我的应用程序的目录结构

enter image description here

这是我的NHLSDecorator类的代码段

NHLSDecorator class

这是_results_html.erb文件中的行,该行在运行时引发错误

<% posting = Posting::Decorator.new(posting) %>

现在有了这个错误

Error

我的自动路径中也有nhls/app/presenters目录。我还添加了app/presenters/posting目录。这是我的application.rb文件的快照

# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/extras)
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.autoload_paths += Dir["#{config.root}/app/controllers/**/"]
config.autoload_paths += Dir["#{config.root}/app/reports/**/"]
config.autoload_paths += Dir["#{config.root}/app/searchers/**/"]
config.autoload_paths += Dir["#{config.root}/app/workers/**/"]
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)
config.autoload_paths += %W(#{config.root}/app/presenters/posting)

但是我得到了错误。如果我更改config.eager_load = true。然后工作正常。为什么我收到此错误?可能是什么原因?

谢谢

1 个答案:

答案 0 :(得分:0)

我解决了。基本上,我将app/presenters目录中的文件重命名为nhls_decorator.rb。代替NHLS_Decorator。同样在代码中,我更改了行

class Posting::Decorator < NhlsDecorator

请注意,以前是class Posting::Decorator < NHLSDecorator。并在文件nhls_decorator.rb

class NhlsDecorator < SimpleDelegator 

请注意,以前是class NHLSDecorator < SimpleDelegator

因此重命名就可以了。实际上,通过调试,我发现对于NHLSDecorator文件名,rails无法找到任何路径。但是,当我将其更改为NhlsDecorator时,rails会找到app/presenters/nhls_decorator.rb"的路径并加载文件。

谢谢