【问题标题】:NameError - uninitialized constant error in rails 4NameError - rails 4 中未初始化的常量错误
【发布时间】:2014-02-01 10:19:49
【问题描述】:

我的“ProgramsController.rb”文件中有以下代码,我使用了一个名为“DataTableDelegate”的类,该类位于一个名为“datatable_delegate.rb”的单独文件中

 # GET /programs
 # GET /programs.json
 def index
    puts "Running Program/index"
puts "Model name = #{controller_name.classify}"
respond_to do |format|
    format.html
@datatable_options = generate_datatable_hash(view_context, controller_name.classify, Program.data_table_attribute_array )
log_with_blue("============================================")
log_with_yellow("#{@datatable_options.inspect}")
log_with_blue("============================================")
>>>>>> format.json { render json: DataTableDelegate.new( @datatable_options)  }
   end
   end

文件“datatable_delegate.rb”位于

 app/datatables/datatable_delegate.rb

当我在浏览器中加载 Programs url 时,我的日志中会显示以下内容:

在 237 毫秒内完成 500 个

 NameError - uninitialized constant ProgramsController::DataTableDelegate:
 activesupport (4.0.0) lib/active_support/dependencies.rb:500:in `load_missing_constant'
 activesupport (4.0.0) lib/active_support/dependencies.rb:183:in `const_missing'
 app/controllers/programs_controller.rb:22:in `block (2 levels) in index'
 actionpack (4.0.0) lib/action_controller/metal/mime_responds.rb:191:in `respond_to'
 app/controllers/programs_controller.rb:13:in `index'
 actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
 actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
 ......

我试图在我的程序控制器文件中添加一个 require 语句,但我仍然收到错误.....

我该怎么办?

谢谢

【问题讨论】:

    标签: ruby-on-rails include require


    【解决方案1】:

    你不需要ProgramsController 中的require 语句,因为app/ 目录中的所有文件都由Rails 自动加载。

    问题在于您访问DataTableDelegate 的方式。它以Datatable 命名,因此该文件的位置位于app/datatables/ 目录中。

    尝试以下方法:

    ::Datatable::DatatableDelegate.new( @datatable_options)
    

    请注意上面模块和类名中字符的大小写。

    【讨论】:

      【解决方案2】:

      将您的文件重命名为“data_table_delegate.rb”。还要检查app/datatables 的路径是否在您的autoload_paths 中。

      【讨论】:

      • 我相信 app/ 下的每个子目录都是自动加载的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多