0

我正在使用 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(参数数量错误(1 为 2)):
  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'
4

2 回答 2

1

如果您阅读错误消息,您会看到错误消息来自数据表上的初始化方法。

您的数据表初始化定义为def initialize(view)

因此,它需要一个参数:view. 你传入两个参数:

SubcontractorsDatatable.new(view_context, @sbcons)

因此,您将 2 个 args 传递给一个期望 1 并得到错误的方法。

于 2013-06-07T07:58:59.797 回答
1

嗨,纠正这种类型如下:

render json: SubcontractorsDatatable.new(view_context, @sbcons)

初始化方法

  def initialize(view, sbcons)
    @view = view
    @sbcons = sbcons
  end
于 2013-06-07T07:59:56.033 回答