我在“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
当我在浏览器中加载程序URL时,我在日志中得到以下内容:
在237ms完成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语句,但我仍然收到错误.....
我该怎么办?
由于
答案 0 :(得分:2)
require
中不需要ProgramsController
语句,因为app/
目录中的所有文件都由Rails自动加载。
问题在于您访问DataTableDelegate
的方式。它以Datatable
命名,因此此文件的位置位于app/datatables/
目录中。
尝试以下方法:
::Datatable::DatatableDelegate.new( @datatable_options)
请注意上面模块和类名中的字符大小写。
答案 1 :(得分:0)
将您的文件重命名为'data_table_delegate.rb'。同时检查路径app/datatables
是否在autoload_paths
。