我有一个类别过滤器,以便显示每个类别的作品。
它与数据过滤器
配合使用,触发如下工作:
<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”...?
谢谢!
最佳答案
如果您想获取每个类别的 name
属性的所有值,请执行以下操作:
Category.pluck(:name) #=> ['name1', 'name2',..., 'name10']
根据您所写的内容,您希望名称之间的间隔如下“name1 name2 name3”。然后只需将名称之间用空格连接即可:
Category.pluck(:name).join(' ') #=> name1 name2 ... name10
@Stefan 提出了一个有效的观点。在 View 层中使用诸如 Category.all
之类的逻辑被认为是不好的做法。相反,您应该将该逻辑放入负责呈现特定模板( View )的 Controller 操作中。
即:
在 Controller 中
def works
@category_names = Category.pluck(:name)
end
在 View 中
<span class="filter active" data-filter="<%= @category_names.join(' ') %>">Todos</span>
关于ruby-on-rails - 如何获取特定模型的所有名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46079742/