如何从特定模型中获取所有名称

时间:2017-09-06 16:01:06

标签: ruby-on-rails ruby

我有类别的投资组合过滤,以显示每个类别的作品。

它适用于data-filter,可以触发这样的作品:

<span class="filter" data-filter=".<%= c.name.downcase.gsub(/[[:space:]]/, '') %>"><%= c.name %></span>

对于单独的类别,它可以正常工作,但我希望:active选项卡包含所有的工作,因此我需要获取所有类别名称:

<span class="filter active" data-filter="<%= Category.all.map(&:name) %>">Todos</span>

如何检索类别名称,例如“name1 name2 name3”......?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您想获得每个类别的name属性的所有值,请执行以下操作:

Category.pluck(:name) #=> ['name1', 'name2',..., 'name10']

根据您所写的内容,您希望这些名称可以像这样分开&#34; name1 name2 name3&#34;。然后只需将名称与每个名称之间的空格连接起来:

Category.pluck(:name).join(' ') #=> name1 name2 ... name10

@Stefan提出了一个有效的观点。在视图层中使用Category.all等逻辑被认为是不好的做法。相反,您应该将该逻辑放在负责呈现特定模板(视图)的控制器操作中。

即:

控制器中的

def works
 @category_names = Category.pluck(:name)
end

在视图中

<span class="filter active" data-filter="<%= @category_names.join(' ') %>">Todos</span>