ruby-on-rails - Rails - 如何创建字母系统?

标签 ruby-on-rails ruby alphabetical

我正在使用 Ruby on Rails 从我的 mySQL 数据库获取数据:

def all_specs
   Specialization.order("title ASC").all;
end

现在,我想像这样在 View 文件中对这些数据进行排序:

 <div class="nav-column">
   <h3>A</h3>
    <ul class="submenu">
        <li><a href="#">All data that has title that starts with A</a></li>
    </ul>
</div>   

 <div class="nav-column">
   <h3>A</h3>
    <ul class="submenu">
        <li><a href="#">All data that has title that starts with B</a></li>
    </ul>
</div>   

and so on from A-Z

我怎样才能做到这一点?

最佳答案

您可以对数据进行分组:

specs = Specialization.order("title ASC")
specs_by_first_letter = specs.group_by { |spec| spec.title[0] }

这会返回一个散列,如下所示:

{
  "A" => [<Specialization title:"A...">, <Specialization title:"A...">],
  "B" => [<Specialization title:"B...">, <Specialization title:"B...">],
  ...
  "Z" => [<Specialization title:"Z...">, <Specialization title:"Z...">]
}

遍历这个散列应该很容易。请注意,某些字母可能会丢失。

关于ruby-on-rails - Rails - 如何创建字母系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18365495/

相关文章:

ruby - 为什么这个 Ruby 条件赋值没有被内存?

ruby-on-rails - 在 Windows 上运行 Ruby/Rails 的限制

c++ - 将两个 vector 中的元素按字母顺序排列到一个 vector 中

ruby-on-rails - SpreeCommerce 价格格式

ruby-on-rails - Heroku 使用生产配置而不是暂存配置

ruby-on-rails - 使用 Devise 时如何在注册后重定向用户?

javascript - 复选框列表的奇怪字母排序

c - 在 C 中移动二维数组中的列

ruby-on-rails - 如何让 Capybara 通过标签检查复选框

ruby-on-rails - wicked_pdf 在 css 文件中使用图像标签助手