我正在使用jquery-datatables-rails gem来显示使用json的信息。由于添加了所需的过滤代码,因此无法显示出现上述错误的任何内容。
我已经添加了下面的完整方法,但这是在堆栈跟踪中引发的违规行
render json: SubcontractorsDatatable.new(view_context, @sbcons)
初始化方法
def initialize(view)
@view = view
end
索引方法
def index
@sbcons = Subcontractor.scoped
if filters = params[:filter]
@sbcons = @sbcons.where(sbcon_type: filters[:type]) unless filters[:type].blank?
@sbcons = @sbcons.where(cscs_card: filters[:cscs]) unless filters[:cscs].blank?
@sbcons = @sbcons.where(approved_status: filters[:approved]) unless filters[:approved].blank?
end
respond_to do |format|
format.html
format.json do
render json: SubcontractorsDatatable.new(view_context, @sbcons)
end
end
end
堆栈跟踪
ArgumentError (wrong number of arguments (2 for 1)): app/datatables/subcontractors_datatable.rb:4:in `initialize' app/controllers/subcontractors_controller.rb:35:in `new' app/controllers/subcontractors_controller.rb:35:in `block (2 levels) in index' app/controllers/subcontractors_controller.rb:32:in `index'
答案 0 :(得分:1)
如果您阅读了错误消息,您将看到错误消息来自数据表上的initialize方法。
您的数据表初始化定义为def initialize(view)
因为它需要一个参数:view
。你传递了两个论点:
SubcontractorsDatatable.new(view_context, @sbcons)
因此,您将2个args传递给期望为1并获得错误的方法。
答案 1 :(得分:1)
您好要更正以下类型:
render json: SubcontractorsDatatable.new(view_context, @sbcons)
初始化方法
def initialize(view, sbcons)
@view = view
@sbcons = sbcons
end