ruby-on-rails – 获取will_paginate以在第一页上定义自定义偏移量

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 获取will_paginate以在第一页上定义自定义偏移量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在我的rails网站上建立一个新闻栏目,它使用will_paginate进行分页.现在我想知道如何使用will_paginate为第一页指定自定义偏移量.这样的事情: @H_403_2@@featured_news = Post.first @news = Post.offset(1).paginate(:page => params[:page])

我需要最新的新闻条目是特殊的,不包含在@news对象中.

我怎么能做到这一点?

谢谢你的时间!

解决方法

will_paginate重新定义每个偏移量并限制查询条件,以获取特定页面的行.我可以看到两个选项:

丑陋的:利用will_paginate对集合起作用的事实,并使用这种语法(它会加载你的所有表格)

@H_403_2@@news = Post.offset(1).all.paginate(:page => params[:page])

较长的一个:分叉will_paginate gem,以便它可以处理自定义偏移.我没有尝试过,但是这样的事情应该有效(对宝石的更改会突出显示)

@H_403_2@# will_paginate / lib / will_paginate / active_record.rb module Pagination def paginate(options) options = options.dup pagenum = options.fetch(:page) { raise ArgumentError,":page parameter required" } per_page = options.delete(:per_page) || self.per_page total = options.delete(:total_entries) ####################################### custom_offset = options.delete(:offset) ####################################### count_options = options.delete(:count) options.delete(:page) ####################################################### # rel = limit(per_page.to_i).page(pagenum) rel = limit(per_page.to_i).page(pagenum,custom_offset) ####################################################### rel = rel.apply_finder_options(options) if options.any? rel.wp_count_options = count_options if count_options rel.total_entries = total.to_i unless total.blank? rel end ################################ # def page(num) def page(num,custom_offset = 0) ################################ rel = scoped.extending(RelationMethods) pagenum = ::WillPaginate::PageNumber(num.nil? ? 1 : num) per_page = rel.limit_value || self.per_page ################################################################## # rel = rel.offset(pagenum.to_offset(per_page).to_i) rel = rel.offset(pagenum.to_offset(per_page).to_i + custom_offset) ################################################################## rel = rel.limit(per_page) unless rel.limit_value rel.current_page = pagenum rel end end

这应该允许您使用以下语法:

@H_403_2@@news = Post.paginate(:page => params[:page],:offset => 1)
原文链接:https://www.f2er.com/ruby/264959.html

猜你在找的Ruby相关文章