Jquery 使用datatables进行分页和排序

Jquery 使用datatables进行分页和排序,jquery,ruby-on-rails,ruby,datatable,Jquery,Ruby On Rails,Ruby,Datatable,我有一个rails 4应用程序,它具有sunspot gem,并使用json响应datatables jquery插件。我松散地跟随着这条铁路: 我的控制器中的索引现在如下所示: def index @search = Product.search do |query| query.fulltext params[:sSearch] query.with(:store_id, @collection.id) query.paginate(:page => par

我有一个rails 4应用程序,它具有sunspot gem,并使用json响应datatables jquery插件。我松散地跟随着这条铁路:

我的控制器中的索引现在如下所示:

def index
  @search = Product.search do |query|
    query.fulltext params[:sSearch]
    query.with(:store_id, @collection.id)
    query.paginate(:page => params[:page] || 1, :per_page => 35)
  end
  @products = @search.results


  @headers = @products.map(&:data).flat_map(&:keys).uniq
  @product_data = @products.map{ |product| product[ :data ].values }

  respond_to do |format|
    format.html
    format.json do
      render :json=> {
        "sEcho"               => params[:sEcho].to_i,
        "iTotalRecords"       => @products.count,
        "iTotalDisplayRecords"=> @products.count,
        "aaData"              => @product_data.as_json
      }
    end
  end
end
现在,我正试图让排序和分页与我拥有的搜索块一起工作,但我不知道如何做到这一点。所以我基本上是想用这个代码:

def fetch_products
   products = Product.order("#{sort_column} #{sort_direction}")
   products = products.page(page).per_page(per_page)
end

def page
   params[:iDisplayStart].to_i/per_page + 1
end

def per_page
   params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
end

def sort_column
   columns = %w[name category released_on price]
   columns[params[:iSortCol_0].to_i]
end

def sort_direction
   params[:sSortDir_0] == "desc" ? "desc" : "asc"
end
把它和我已经有的东西合并起来


谢谢你的帮助

看起来您正在尝试在控制器中执行所有操作,很少引用数据表

如果要使用sunspot进行搜索,请在datatable中更改以下行

def fetch_products
    products = Product.order("#{sort_column} #{sort_direction}")
    products = products.page(page).per_page(per_page)
  if params[:sSearch].present?

   @search = Product.search do |query|
    query.fulltext params[:sSearch]
    query.with(:store_id, @collection.id)
    query.paginate(:page => params[:page] || 1, :per_page => 35)
   end
  products = @search.results
    end
    products
  end
在控制器中

def index
  respond_to do |format|
    format.html
    format.json { render json: ProductsDatatable.new(view_context) }
  end
end
保持数据表中的其他代码原样