我在Rails应用程序的app / datatables文件夹结构下创建了一个新类
该类保存在此目录中的文件中,并另存为DatasetIndexDatatable.rb
该类文件的内容如下:
class DatasetIndexDatatable
delegate :params, :h, :link_to, :number_to_currency, to: :@view
def initialize(view)
@view = view
end
end
当我尝试从应用程序中的控制器实例化此类时,Rails给出了一个错误:
uninitialized constant DatadescriptionController::DatasetIndexDatatable
控制器中试图实例化新类的代码如下:
class DatadescriptionController < ApplicationController
layout "datadescription"
def index
respond_to do |format|
format.html
format.json { render json: DatasetIndexDatatable.new(view_context) }
end
end
end
Rails为什么看不到新课程?我尝试将包含该类的文件夹添加到application.rb中的config.autoload_paths变量中:
config.autoload_paths += %W(#{config.root}/lib
#{config.root}/datatables)
但是会发生相同的错误。我还尝试使用全局名称空间在控制器中实例化新类:
format.json { render json: ::DatasetIndexDatatable.new(view_context) }
并将该类的包含文件夹用作名称空间:
format.json { render json: Datatables::DatasetIndexDatatable.new(view_context) }
一切都无济于事。我究竟做错了什么?
该文件命名不正确。代替:
DatasetIndexDatatable.rb
叫它:
dataset_index_datatable.rb
这是Rails的标准命名约定。如果定义一个CamelCase
类,则应命名包含该定义的文件,该文件应使用camel_case.rb
小写并带有下划线(又名,蛇格)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句