rails 中两个独立模型的分页
Pagination for two separate model in rails
我的数据库模式就是这样
活动
has_many :ads
has_many :surverys
调查和广告彼此没有关系。
对于带分页的列表,我这样做
@ads = Ad.all.page(params[:page]).per(8)
@surveys = Survey.all.page(params[:page]).per(8)
我的要求是同时获取广告和调查的列表。
我必须同时得到两个
@ad_and_surveys =
我如何获取并对其进行分页?
您必须使用两个不同的参数同时对两个不同的表格进行分页:
例如:
控制器:
@ads = Ad.all.page(params[:ads_page]).per(8)
@surveys = Survey.all.page(params[:surveys_page]).per(8)
查看:
<%= will_paginate @ads, param_name: :ads_page %>
<%= will_paginate @surveys, param_name: :surveys_page %>
你可以像下面那样做:
@ads = Ad.all
@surveys = Survey.all
sorted_array_of_ads_and_surveys = (@ads.to_a + @surveys.to_a).sort_by { |k| k["created_at"] }
@desired_output = sorted_array_of_ads_and_surveys.page(params[:page]).per(8)
sorted_array_of_ads_and_surveys
是经过排序的@ads 和@surveys 的组合。所以你得到了广告和调查的组合。否则先上广告后调查效果不佳。
您可以使用 will_paginate/array
!
创建文件 config/initializers/will_paginate_array_fix.rb
并添加:
require 'will_paginate/array'
在您的控制器上:
def show
@ad_surveys = Ad.all + Survey.all # or what ever you have
@ad_and_survey = @ad_surveys.paginate(page: params[:page], per_page: 5)
end
正在查看:
<%= will_paginate @ad_and_survey %>
我的数据库模式就是这样 活动
has_many :ads
has_many :surverys
调查和广告彼此没有关系。
对于带分页的列表,我这样做
@ads = Ad.all.page(params[:page]).per(8)
@surveys = Survey.all.page(params[:page]).per(8)
我的要求是同时获取广告和调查的列表。
我必须同时得到两个
@ad_and_surveys =
我如何获取并对其进行分页?
您必须使用两个不同的参数同时对两个不同的表格进行分页:
例如:
控制器:
@ads = Ad.all.page(params[:ads_page]).per(8)
@surveys = Survey.all.page(params[:surveys_page]).per(8)
查看:
<%= will_paginate @ads, param_name: :ads_page %>
<%= will_paginate @surveys, param_name: :surveys_page %>
你可以像下面那样做:
@ads = Ad.all
@surveys = Survey.all
sorted_array_of_ads_and_surveys = (@ads.to_a + @surveys.to_a).sort_by { |k| k["created_at"] }
@desired_output = sorted_array_of_ads_and_surveys.page(params[:page]).per(8)
sorted_array_of_ads_and_surveys
是经过排序的@ads 和@surveys 的组合。所以你得到了广告和调查的组合。否则先上广告后调查效果不佳。
您可以使用 will_paginate/array
!
创建文件 config/initializers/will_paginate_array_fix.rb
并添加:
require 'will_paginate/array'
在您的控制器上:
def show
@ad_surveys = Ad.all + Survey.all # or what ever you have
@ad_and_survey = @ad_surveys.paginate(page: params[:page], per_page: 5)
end
正在查看:
<%= will_paginate @ad_and_survey %>