获取 will_paginate 在第一页上定义自定义偏移量

2023-11-23

我正在我的网站上建立一个新闻版块铁路网站它使用将分页用于分页。现在我想知道如何指定自定义偏移量对于带有 will_paginate 的第一页。像这样的东西:

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

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

我怎样才能做到这一点?

谢谢你的时间!


will_paginate重新定义每一个offset and limit查询条件,获取特定页面的行。我可以为你看到两个选择:

丑陋的一点:利用 will_paginate 适用于集合的事实,并使用此语法(尽管它会加载所有表)

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

较长的:叉子will_paginategem,以便它可以处理自定义偏移量。我还没有尝试过,但是类似的东西应该可以工作(对 gem 的更改突出显示)

# 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

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

@news = Post.paginate(:page => params[:page], :offset => 1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 will_paginate 在第一页上定义自定义偏移量 的相关文章

  • 使用 Ruby on Rails 索引多列

    我在 Mysql 数据库中有一个表 我想在其上使用多列索引 如何在不使用 mysql 控制台的情况下在 Rails 中执行此操作 在迁移定义中 您可以这样做 add index table name column1 column2
  • 如何通过Grape API获取路由

    我使用 gem grape 作为 api 我尝试通过命令获取 api urlrake grape routes namespace grape do desc routes task routes gt environment do API
  • Rails 5 - 在 gem 上充当 Taggable - 简单表单集合选择已定义的标签列表

    我正在尝试学习如何将 Acts as Taggable On gem 与 Rails 5 一起使用 我使用简单的表格作为表格 我认为部分问题是由于提案和 randd fields 之间的模型没有关联而产生的 我有名为 Proposal 和
  • 多步ActiveRecord的模型验证

    考虑具有以下字段的用户模型 名字 必填 姓氏 必填 电子邮件 必填 要求输入密码 电话 必填 大小 10 位数字 地址 必填 以及包含以下步骤的多步骤注册表单 第一步 包含 名字 姓氏 和 电子邮件 字段 第二步输入密码 电话和地址 您将如
  • 载波无法删除图像

    我现在使用 Carrierwave 上传图像 一切都很好 除了一个 当我添加用于删除上传图像的复选框时 我收到错误 无法批量分配受保护的属性 remove image Form Model class Manufacturer lt Act
  • 动态分配背景图片scss/sass

    我想要做的是有一个表单 您可以在其中上传图片 然后当您查看该对象时 图片会在特定 div 中居中 垂直和水平向上倾斜 其大小未知等 除非有办法使用 image tag 帮助器将其垂直居中 否则我希望能够使用该图像作为背景图像 在我的 css
  • Rails API 设计无需禁用 CSRF 保护

    早在 2011 年 2 月 Rails 就改为需要 CSRF 令牌all non GET http weblog rubyonrails org 2011 2 8 csrf protection bypass in ruby on rail
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • 如何生成devise gem的注册控制器

    我已经设置了 Devise 我已经在 user rb 文件中设置了以下代码 def self create auto password generated password Devise friendly token first 8 sel
  • Rails - 可以在 javascript 函数中设置 Rails 变量吗?

    在 javascript 函数中设置 Rails 变量有什么问题吗 我无法在谷歌上搜索到明确的答案 只是想确保没有我不知道的陷阱或缺陷 我实际上对它是如何工作的感到困惑 如果 javascript 在客户端执行 我不会假设 Rails 会在
  • Rails 应用程序在模型间保存方面遇到问题

    我正在开发一个从网站下载元标签并然后保存的应用程序 下载发生在一个名为Site 我想将下载的机器人元标签保存到一个名为的模型中robots tag它通过一个名为的连接表连接到站点meta tag sites 但是我在站点模型中编写的用于执行
  • i18n:特定型号的错误消息本地化

    我可以为每个验证本地化错误消息 但如何为特定模型创建错误 普通的语言环境如下所示 en mongoid errors messages taken It is already taken 但我想更改消息user model en mongo
  • 如何使用 rspec 测试条件 ActiveRecord after_update 回调?

    我有一个触发作业的条件回调 如果经理发生变化 则应调用该方法 class Employee lt ActiveRecord Base after update employee manager on change if employee i
  • ActiveRecord 布尔验证接受非布尔值

    我正在尝试验证属性是否为布尔值 即 true 或 false 从我期望的 Rails 指南中 validates new out of stock inclusion in true false 可以工作 但它接受非布尔值 例如 Hi 作为
  • 使用 RSpec 进行 Rails 片段缓存测试

    我觉得这是一个没有太多记录的主题 至少我在这里找到最佳实践时遇到了很多麻烦 我使用 cache key 在视图中进行片段缓存 tbody employees each do employee cache employee do tr emp
  • 多租户 Rails 应用:不同技术的优缺点是什么?

    我最初是为一位客户编写 Ruby on Rails 应用程序的 现在 我正在更改它 以便它可以用于不同的客户 我的最终目标是某些用户 不是我 可以单击按钮并创建一个新项目 然后生成所有必要的更改 新架构 新表 代码处理 无需任何人需要我编辑
  • 如何在 Rails 3 项目中包含 SSL 证书

    我开发了一个 Rails 3 项目 它使用thin作为服务器 与 Devise 和 Doorkeeper 一起进行身份验证 我想在我的项目中添加 SSL 证书 我看过一些描述如何在 Rails 3 项目中使用 SSL 证书的帖子 但没有一个
  • Ruby/Rails - 访问“查找”表而不对其进行建模?

    这是针对 Ruby on Rails 3 0 x 项目的 我有一个 查找 表 其中包含来自供应商的数据 当我从其他来源导入数据时 我想检查此表 加入 SKU 以获取额外数据 在我的应用程序中为该表创建模型对我来说似乎不合适 我的应用程序永远
  • 适用于移动应用程序的 Rails REST API。会议

    我正在创建一个移动应用程序 该应用程序拥有用户并与后端的自定义 Rails REST API 进行通信 我应该在登录时创建会话吗 或者我应该在每个请求中发送用户名和密码 如果会议是可行的方法 那么通常是如何实施的 只需生成令牌 并使用它们来
  • 为什么 yaml 在生产中不可用?

    在我的 OS X 开发系统上 ruby version ruby 1 8 6 2007 03 13 patchlevel 0 universal darwin8 0 script console Loading development en

随机推荐

  • 为什么@RequestMapping注解在java中接受String参数,但在scala中不接受?

    阅读 RequestMapping文档 http static springsource org spring docs 2 5 x api org springframework web bind annotation RequestMa
  • Eclipse 内容辅助错误

    最近 我在 Eclipse 中的内容辅助方面遇到了越来越多的问题 在我的一些项目中 我没有从内容协助中得到任何建议 而在其他项目中 我得到了部分或全部预期的建议 通常 Eclipse 中不会出现 错误 但下面是我收到错误时的一个示例 内容辅
  • Pandas - 根据条件重复行

    如果该行满足条件 我试图创建一个重复的行 在下表中 我根据 groupby 创建了累积计数 然后对 groupby 的 MAX 进行了另一个计算 df PathID df groupby DateCompleted cumcount 1 d
  • 如何使用运行时定义的比较器定义有序映射/集?

    这类似于如何将自定义比较器函数与 BTreeSet 一起使用 但是就我而言 直到运行时我才会知道排序标准 可能的标准很广泛并且不能被硬编码 想想像按到目标的距离排序 or 按有效负载中的特定字节排序或其组合 创建地图 集合后 排序标准不会更
  • Chrome 丢失 cookie

    我的实时网站上出现错误 但我在开发环境中没有看到该错误 而且似乎只在 Chrome 中发生 我四处寻找解决方案 发现仅与 Auth cookie 有关的问题 实际上我过去提出过关于 chrome 和 auth cookie 的问题 但这是不
  • ARKit – 使用世界光线而不是屏幕点进行光线投射

    我想实现类似的目标ARCore的光线投射方法它采用世界空间坐标中的任意射线而不是屏幕空间点 List
  • json 字符串可以包含 HTML 标签吗?

    考虑这是我的 json 字符串 Mat id 2 Mat Name Steel Measurement mm Description Steel 我可以像这样在这个 json 字符串中添加 HTML 标签吗 Mat id 2 Mat Nam
  • 过早优化的实用规则[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 看来这句话 过早的优化 是
  • RMarkdown PDF“LaTeX3 错误:错误变量”

    我已经通过 RMarkdown 创建 PDF 报告几个月了 但是今天在新机器上安装 MikTex R 以及 rmarkdown 和 tidyverse 软件包后 我在尝试编织 PDF 时收到以下错误消息 C PROGRA 2 Pandoc
  • YouTube API v3 每次都不断请求授权

    我正在使用 YouTube api v3 来检索视频列表 示例如下 https developers google com youtube v3 code samples php retrieve my uploads 我打开页面 应用程序
  • NodeJS 原生鼠标和键盘绑定 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我一直在寻找一个支持鼠标和键盘监听和执行的原生nodejs模块 我找到了这个 https npmjs org package mouse但源代码看起
  • 在 Windows Server 2012 上注册 ASP.NET 4.5 的替代方法

    当我运行 WCF 服务时 出现 MIME 未注册错误 我用过这个link来解决这个问题 之后 我开始收到另一个错误 要求我向 IIS 注册 ASP NET 框架 所以我用了 aspnet regiis 命令 但它显示以下错误 Microso
  • D3 Crossfilter 基本示例

    我刚刚接触 D3 非常喜欢交叉过滤库 我想生成类似的东西 但我没有使用航班数据 而是采用以下格式的 CSV 数据 行 列 值 我只想要一个显示值的直方图 以及一张按值字段排序的表格 很难理解他们的例子中发生了什么 有人可以建议或展示一个非常
  • YouTube 嵌入在 Firefox 中不起作用

    我嵌入了三个 Youtube 视频 它们在除 Firefox 之外的所有浏览器中都能完美运行 尝试在服务器端清除缓存 在本地清除cookies和缓存 尝试了18台不同的计算机 尝试了Windows 7 Windows 8 Linux Ubu
  • 观察 NSMutableArray 的插入/删除

    一个类有一个类型为 NSMutableArray 的属性 和实例变量 带有合成访问器 通过 property 如果您使用以下命令观察该数组 myObj addObserver self forKeyPath theArray options
  • INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别? [复制]

    这个问题在这里已经有答案了 有什么区别INNER JOIN LEFT JOIN RIGHT JOIN and FULL JOIN in MySQL SQL JOIN 子句用于组合两个或多个表中的行 基于他们之间的共同领域 SQL 中有不同类
  • 在Perl中,如何获得多个集合的笛卡尔积?

    我想用 Perl 进行排列 例如我有三个数组 big tiny small 然后我有 red yellow green 并且 apple pear banana 如何得到 big red apple big red pear etc sma
  • LZ4库解压数据上限大小估计

    我在用着LZ4库以及解压缩数据时 int LZ4 decompress safe const char source char dest int compressedSize int maxDecompressedSize 我想估计最大解压
  • 混杂模式下的数据包套接字仅接收本地流量

    我有一个创建的套接字socket PF PACKET SOCK RAW htons ETH P ALL 我使用以下方法将其设置为混杂模式 struct ifreq ifr strncpy char ifr ifr name interfac
  • 获取 will_paginate 在第一页上定义自定义偏移量

    我正在我的网站上建立一个新闻版块铁路网站它使用将分页用于分页 现在我想知道如何指定自定义偏移量对于带有 will paginate 的第一页 像这样的东西 featured news Post first news Post offset