通过字符串收集记录并制作这些记录的数组

时间:2014-06-03 04:27:16

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个看起来像这样的循环:

<% 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

但我似乎无法将记录记录到哈希中。这甚至可能吗?

2 个答案:

答案 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)

您将获得带键的哈希是类别,值是模板列表