You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅使用下一页按钮实现分页功能

嘿,我来帮你搞定这个仅带「下一页」按钮的单条记录分页功能!先梳理下你现有代码里的小问题,再给你一套完整的可运行方案:

第一步:修正控制器逻辑

你现有代码里@evaluation = Evaluation.pluck(:content).last这里有个小问题:pluck(:content)返回的是字符串数组,取last之后是单个字符串,没法用each遍历哦。我给你调整成符合需求的分页逻辑,核心是判断「是否还有下一页」,只在有后续记录时显示按钮:

class QuestionsController < ApplicationController
  before_action :set_page, only: [:view]
  QUESTIONS_PER_PAGE = 1

  def view
    # 先获取所有需要展示的问题集合,这里按ID排序,你可以改成自己需要的查询/排序规则
    @questions = Question.all.order(:id)
    
    # 取出当前页的单条记录
    @current_question = @questions.offset((@page - 1) * QUESTIONS_PER_PAGE).first
    
    # 关键:判断是否存在下一页
    @has_next_page = @questions.offset(@page * QUESTIONS_PER_PAGE).exists?
  end

  private

  def set_page
    # 确保page参数是合法的正整数,默认显示第1页
    @page = params[:page].present? ? params[:page].to_i : 1
    @page = 1 if @page < 1
  end
end

如果你的问题来源是Evaluation的content字段拆分出来的多条内容(比如content里用换行/逗号分隔了多个问题),那可以把控制器逻辑改成这样:

def view
  # 取最后一条Evaluation的content并拆分成问题数组
  @evaluation = Evaluation.last
  questions_list = @evaluation.content.split("\n") # 这里用换行拆分,你可以换成自己的分隔符
  
  # 转成方便视图调用的结构(模拟Question对象)
  @questions = questions_list.map { |q_content| OpenStruct.new(content: q_content) }
  
  # 当前页的问题
  @current_question = @questions[@page - 1]
  
  # 判断是否有下一页:当前页码小于总问题数
  @has_next_page = @page < @questions.length
end
第二步:视图层实现「下一页」按钮

在对应的视图模板(比如app/views/questions/view.html.erb)里,先展示当前页的单条记录,再根据@has_next_page的值决定是否显示按钮:

<!-- 展示当前问题 -->
<div class="question-card">
  <% if @current_question %>
    <p><%= @current_question.content %></p>
    <!-- 这里可以添加问题的其他字段,比如创建时间、选项等 -->
  <% else %>
    <p>已经看完所有问题啦 🎉</p>
  <% end %>
</div>

<!-- 仅在有下一页时显示按钮 -->
<% if @has_next_page %>
  <%= link_to '下一页', view_questions_path(page: @page + 1), class: "btn btn-primary" %>
<% end %>

这样就能实现你要的效果:每页只显示一条记录,只有「下一页」按钮,没有上一页、页码导航这些多余元素~

内容的提问来源于stack exchange,提问作者amy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:54:26