我从数据库加载数据,例如:
@cars = Car.where(...).order('created_at DESC').group_by { |r| r.voted.to_date }
然后,我认为:
- @cars.each do |key, arr|
- categories = arr.uniq{|x| x.category_id} # so here I should get list of objects with uniuque category ID
...
- arr.each do |car|
... print information about car ...
如何按名称订购此categories
列表?在car
模型中,有属性category_id
。
答案 0 :(得分:0)
使用category.name ASC
。尝试,
@cars = Car.includes(:category).where(...).order('category.name ASC')
答案 1 :(得分:0)
“如何按名称订购此类别列表?”这使我们想到使用范围。
以下是设置:在category.rb
中 scope :by_name, -> { order(name: :asc) }
现在你有一个引用句柄来获取category.name sorted ascending。
因此,在您看来,您可以为每个| car |
执行类似的操作<% if car.categories.by_name.any? %>
<%= render category_name_partial", collection:...%>
etc.
我用'.any?'只是为了说明由于此操作而您有一个已排序的集合,您列出的列出的名称是根据“by_name”定义的范围排序的。