spy*_*g63 4 ruby ruby-on-rails ruby-on-rails-3
我正在尝试按字母顺序和块中显示数据库中的标题列表.
我想输出这封信,然后包括以该字母开头的所有标题.例如:
我知道我可以使用.order('title')订购我的结果,但我不确定编写显示代码的最佳方法是什么?
titles.group_by {|word| word[0].upcase }
Run Code Online (Sandbox Code Playgroud)
那么,如果:
titles = ['Apple', 'anothersomething', 'Bob']
Run Code Online (Sandbox Code Playgroud)
然后:
grouped_titles = titles.group_by {|word| word[0].upcase }
=> {"A"=>["Apple", "anothersomething"], "B"=>["Bob"]}
Run Code Online (Sandbox Code Playgroud)
为了确定排序,您可以对生成的Hash进行排序,将其转换为数组:
grouped_titles = grouped_titles.sort_by{|k, v| k}
=> [["A", ["Apple", "anothersomething"]], ["B", ["Bob"]]]
Run Code Online (Sandbox Code Playgroud)
然后,您可以迭代生成的数组.
<% grouped_titles.each do |initial_letter, titles| %>
-display stuff here-
<% end %>
Run Code Online (Sandbox Code Playgroud)
请注意,这是在Ruby中进行分组,而不是在数据库中进行分组(可以通过.group在关系上使用方法来完成),但如果您已经在页面中显示了所有数据,则此方法应该没问题.
| 归档时间: |
|
| 查看次数: |
3511 次 |
| 最近记录: |