我正在使用will_paginate宝石来进行无限滚动。
will_paginate gem通常根据数据大小为每个页面创建链接。
我目前有42行正在获取,并且我将per_page
设置为per_page = 8
控制器代码:
page = params[:page]
per_page = 8
@ads = FbAd.get(current_users_user, page, per_page)
respond_to do |format|
format.html
format.js
end
型号代码:
ads = FbAd.active
.select("fb_ads.id AS ad_id,
ac.fb_id AS creative_id,
acoss.source_page_id,
ald.link,
ald.call_to_action_type,
ald.message,
ald.name,
uass.url,
uass.file_type,
fbp.name AS page_name,
fbp.thumbnail_url")
.where("fb_ads.user_id = ?", userId)
.joins("INNER JOIN fb_adcreatives ac ON fb_ads.fb_adcreative_id = ac.id")
.joins("INNER JOIN fb_adcreative_object_story_specs acoss ON ac.fb_adcreative_object_story_spec_id = acoss.id")
.joins("INNER JOIN fb_adcreative_link_data ald ON ald.fb_adcreative_object_story_spec_id = acoss.id")
.joins("INNER JOIN fb_assets ass ON ass.fb_id = ald.image_hash")
.joins("INNER JOIN user_assets uass on uass.id = ass.user_asset_id")
.joins("INNER JOIN fb_pages fbp on fbp.fb_id = acoss.source_page_id")
.group("fb_ads.id, acoss.source_page_id, ald.link, ald.call_to_action_type, ald.message, ald.name, uass.url,
uass.file_type, fbp.name, fbp.thumbnail_url, ac.fb_id")
.paginate(:page => page, :per_page => per_page)
ads
我的问题是,提取数据时,gem没有为下一页创建任何链接
这是我的HTML代码:
<section class="mt-7 mb-6">
<div class="container" style="display: none;">
<%= will_paginate @ads %>
</div>
</section>
这是我加载页面时DOM的外观:
我想知道是否缺少导致该问题的原因,我在同一项目中使用了相同的代码,但是我似乎无法弄清楚是什么原因或可能导致此问题的原因。
编辑:
如果我显示page_entries_info,则当显示8时它说有1条记录:
<div class="mt-5">
<%= page_entries_info @ads %>
</div>
显示:
显示1个Fb广告
编辑2:
这与我的查询有关。由于某种原因,will_paginate认为我有1条记录。
如果我只获取
ads = FbAd.active.paginate(:page => page, :per_page => per_page)
它生成链接。
我尝试仅制作原始SQL并像这样获取它
ads = ActiveRecord::Base.connection.select_all(sql)
但是返回一个哈希值,我需要活动记录对象。