我有一个rails 4应用程序,它有sunspot gem并使用json来响应datatables jquery插件。我正在松散地关注这个railscast:http://railscasts.com/episodes/340-datatables
我的控制器中的索引现在看起来像这样:
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
并将其与我已有的合并。
感谢您的帮助!
答案 0 :(得分:0)
看起来您正在尝试在控制器中执行所有操作,并且很少引用您的数据表。
如果您想使用太阳黑子搜索,请在数据表中更改以下行
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
将其他代码保留在datatable
中。