我不是Rails程序员的红宝石,但我在页面上添加了第二个结果表已经走得很远了。
我的问题是分页混乱了。
首次加载时。一切看起来都正确。但是,当您单击另一个页码时,它也会同时更改第二个表上的页面。加上将第二张表的副本(如第三张表)添加到页面。
我有枪声。
原始页面在页面加载http://www.digihaul.com/1.png时加载
Orignial
选择页面后
这是我的看法
.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
如评论中所述,Ajax分页是一种方法,但是处理此问题的最佳方法是更改page
每个分页块的参数
param_name
您可以使用参数Kaminari
使用(我知道您正在使用will_paginate
)进行此操作param_name
。基本上,这将设置param
每个分页块读取,从而允许您不同地调用它们,从而控制不同的数据集:
<%= paginate collection, param_name: model.to_s %>
研究了如何使用来完成此操作之后will_paginate
,看来您也可以使用该param_name
参数:
<%= will_paginate @products, param_name: 'products_page' %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句