我有一个看起来像这样的循环:
<% current_user.brand.templates.each do |template| %>
<li><%= link_to(template.label, new_templated_document_path(template)) %></li>
<% end %>
Template
可以有一个类别,但它只是一个字符串而不是一个关联。有没有办法根据类别收集Templates
,并相应地子菜单?我觉得我必须为模型中的每个类别构建一个数组。像这样:
categories = []
Template.categories.each do |c|
category = []
category << Template.where(category: c).all
categories << category
end
categories
虽然感觉很笨拙。有什么帮助吗?
更新
我已将其更改为:
@categories = {}
Template.first.categories.each do |c|
@categories[c] = current_user.brand.templates.where(category: c)
end
但我似乎无法将记录记录到哈希中。这甚至可能吗?
答案 0 :(得分:2)
根据this,您可以使用Template.where(category: Template.categories)
之类的内容。您还可以查看here,其中声明:
Client.where(orders_count: [1,3,5])
将产生
SELECT * FROM clients WHERE (clients.orders_count IN (1,3,5))
我认为你想要的是什么。
答案 1 :(得分:1)
我认为你可以查询模板并按类别对它们进行分组,这样会更容易
Template.all.group_by(&:category)
您将获得带键的哈希是类别,值是模板列表