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

Ruby on Rails单模型实现按分类展示书籍列表求助

解决方案

你可以通过Rails的group_by方法实现按分类分组展示,完全不需要额外创建模型。

第一步:修改控制器

把index方法的代码改成按section字段分组:

def index
  @books_by_section = Book.all.group_by(&:section)
end

group_by会返回一个哈希结构,键是分类名称,对应的值是该分类下所有书籍的数组。

第二步:编写视图代码

在index.html.erb中编写以下代码:

<% @books_by_section.each do |section_name, books| %>
  <strong><%= section_name %></strong>
  <ul>
    <% books.each do |book| %>
      <li><%= "#{book.title},#{book.author}" %></li>
    <% end %>
  </ul>
<% end %>

这样就能实现你想要的效果:每个分类名称作为标题,下方列出对应分类的书籍和作者。

额外小提示:如果担心分类名称存在大小写不统一(比如"小说"和"小说")导致分组混乱,可以在Book模型里加个回调统一格式:

class Book < ApplicationRecord
  validates :section, :title, :author, presence: true
  
  before_save :normalize_section

  private

  def normalize_section
    self.section = section.strip.downcase.capitalize
  end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:20:27