我在app/datatables的文件夹结构下的Rails应用程序中创建了一个新类
该类保存在此目录的文件中,并保存为DatasetIndexDatatable.rb
类文件的内容如下:
class DatasetIndexDatatable
delegate :params, :h, :link_to, :number_to_currency, to: :@view
def initialize(view)
@view = view
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试从我的应用程序中的控制器实例化此类时,Rails给出错误:
uninitialized constant DatadescriptionController::DatasetIndexDatatable
Run Code Online (Sandbox Code Playgroud)
尝试实例化新类的控制器中的代码如下:
class DatadescriptionController < ApplicationController
layout "datadescription"
def index
respond_to do |format|
format.html
format.json { render json: DatasetIndexDatatable.new(view_context) }
end
end
end
Run Code Online (Sandbox Code Playgroud)
为什么Rails不能看到新类?我尝试将包含该类的文件夹添加到application.rb中的config.autoload_paths变量中:
config.autoload_paths += %W(#{config.root}/lib
#{config.root}/datatables)
Run Code Online (Sandbox Code Playgroud)
但是会发生同样的错误.我还尝试使用全局命名空间在控制器中实例化新类:
format.json { render json: ::DatasetIndexDatatable.new(view_context) }
Run Code Online (Sandbox Code Playgroud)
并使用类的包含文件夹作为命名空间:
format.json { render json: Datatables::DatasetIndexDatatable.new(view_context) }
Run Code Online (Sandbox Code Playgroud)
一切都无济于事.我究竟做错了什么?