我不是铁轨程序员的红宝石,但我已经在将第二个结果表添加到我的页面方面做得很远。
我遇到的问题是Pagination搞砸了。
首次加载时。一切都很正常。但是当您单击另一个页码时,它也会更改第二个表上的页面。 plus将第二个表的副本添加到页面中,就像第三个表一样。
我有screan镜头。
原始页面加载
Orignial when page loads http://www.digihaul.com/1.png
选择页面后
这是我的观点
.row-fluid#load_results_table
.span12
- if resultss.empty?
=render partial: 'no_results', locals: {search: search}
- else
%h1.page-header Premium Loads
%p= "These are our loads we are offering. We guarentee 100% payment on these loads"
%table.table.search_results.table-condensed.table-bordered.table-striped.sortable{:id => "#{searches.search_type.pluralize}"}
%thead
%tr.search_header
%th= sortable_load "origin"
%th= sortable_load "dest"
%th= sortable_load "pickup"
%th= sortable_load "delivery"
%th= sortable_load "ltl"
%th= sortable_load "equipment_id", "Equipment"
%th= sortable_load "weight"
%th= sortable_load "length"
%th= sortable_load "rate"
-unless @searches.origin.blank?
%th Estimated Deadhead Miles
%th Actions
%tbody
- resultss.each do |result|
%tr{:class => "#{searches.search_type}_view", :id => "#{result['id']}" }
%td= Location.to_cs(result.origin)
%td= Location.to_cs(result.dest)
%td= format_date(result.pickup)
%td= format_date(result.delivery)
%td= full_or_par(result.ltl)
%td= result.equipment_id ? Equipment.to_equipment_name(result.equipment_id) : ""
%td= result.weight
%td= result.length
%td= result.rate
-unless @searches.origin.blank?
%td= Location.distance_between(@searches.origin.coords, result['origin'])
%td
.btn-group
%a.btn.btn-info{ :href => "/#{searches.search_type.pluralize}/#{result['id']}" } Show
%a.btn{ :href => "javascript:void(0)", :class => "save", user_id: @searches.user_id, :id => result['id']} Save
%a.btn.btn-primary{ :href => "javascript:void(0)", :class => "cover_link", :user_id=> @searches.user_id } Cover
= will_paginate resultss, :renderer => BootstrapPagination::Rails
.row-fluid#load_results_table
.span12
- if results.empty?
=render partial: 'no_results', locals: {search: search}
- else
%h1.page-header Search Results
- if results.count > 1000
%p= "Your search yielded many #{search.search_type.pluralize}"
- else
%p= "Your search yielded #{results.count} #{search.search_type.pluralize}"
=render partial: 'header_buttons', locals: {search: search}
%br
= will_paginate results, :renderer => BootstrapPagination::Rails, id: "first_pagination"
%table.table.search_results.table-condensed.table-bordered.table-striped.sortable{:id => "#{search.search_type.pluralize}"}
%thead
%tr.search_header
%th= sortable_load "origin"
%th= sortable_load "dest"
%th= sortable_load "pickup"
%th= sortable_load "delivery"
%th= sortable_load "ltl"
%th= sortable_load "equipment_id", "Equipment"
%th= sortable_load "weight"
%th= sortable_load "length"
%th= sortable_load "rate"
-unless @search.origin.blank?
%th Estimated Deadhead Miles
%th Actions
%tbody
- results.each do |result|
%tr{:class => "#{search.search_type}_view", :id => "#{result['id']}" }
%td= Location.to_cs(result.origin)
%td= Location.to_cs(result.dest)
%td= format_date(result.pickup)
%td= format_date(result.delivery)
%td= full_or_par(result.ltl)
%td= result.equipment_id ? Equipment.to_equipment_name(result.equipment_id) : ""
%td= result.weight
%td= result.length
%td= result.rate
-unless @search.origin.blank?
%td= Location.distance_between(@search.origin.coords, result['origin'])
%td
.btn-group
%a.btn.btn-info{ :href => "/#{search.search_type.pluralize}/#{result['id']}" } Show
%a.btn{ :href => "javascript:void(0)", :class => "save", user_id: @search.user_id, :id => result['id']} Save
%a.btn.btn-primary{ :href => "javascript:void(0)", :class => "cover_link", :user_id=> @search.user_id } Cover
= will_paginate results, :renderer => BootstrapPagination::Rails
控制器:
def show
@search = Search.find(params[:id])
@searches = Search.find(params[:id])
@results = @search.search(params[:page])
@resultss = @searches.searches(params[:page])
@search.update_attribute(:results, @results.count)
@searches.update_attribute(:resultss, @resultss.count)
respond_to do |format|
format.html
format.js {render "results"}
format.js {render "resultss"}
end
end
模型(最小化查询)
def search(page)
where = []
where << PrepareSearch.states("dest", self.dest_states) unless self.dest_states.blank?
if self.search_type == 'load'
select = "loads.id, origin, dest, pickup, delivery, ltl, equipment_id, weight, length, rate"
where << PrepareSearch.date('pickup', self.pickup, self.pickup_operator) unless self.pickup.blank?
elsif self.search_type == 'truck'
select = "trucks.id, origin, dest, available, expiration, equipment_id, comments"
where << PrepareSearch.date('available',self.available,self.available_operator) unless self.available.blank?
end
where = where.join(' AND ')
order = self.order_by ? self.order_by + " desc" : ""
limit = "LIMIT=200"
Module.const_get(self.search_type.capitalize).where(where).select(select).limit(limit).order(order).page(page).per_page(20)
end
def searches(page)
where = []
where << PrepareSearch.states("dest", self.dest_states) unless self.dest_states.blank?
if self.search_type == 'load'
select = "loads.id, origin, dest, pickup, delivery, ltl, equipment_id, weight, length, rate"
where << PrepareSearch.date('pickup', self.pickup, self.pickup_operator) unless self.pickup.blank?
elsif self.search_type == 'truck'
select = "trucks.id, origin, dest, available, expiration, equipment_id, comments"
where << PrepareSearch.date('available',self.available,self.available_operator) unless self.available.blank?
end
where = where.join(' AND ')
order = self.order_by ? self.order_by + " desc" : ""
limit = "LIMIT=200"
Hotload.where(where).select(select).limit(limit).order(order).page(page).per_page(5)
end
答案 0 :(得分:1)
Ajax分页是一种方式,如评论中所述,但处理它的最佳方法是更改每个分页块的page
参数
<强> PARAM_NAME 强>
您可以使用Kaminari
param_name
(我知道您正在使用will_paginate
)使用you're able to use the param_name
argument too参数执行此操作。这基本上设置了param
每个分页块读取,允许您以不同方式调用它们,从而控制不同的数据集:
<%= paginate collection, param_name: model.to_s %>
在使用will_paginate
研究了如何执行此操作后,似乎{{3}}:
<%= will_paginate @products, param_name: 'products_page' %>