ruby-on-rails - 如何获取特定模型的所有名称

标签 ruby-on-rails ruby

我有一个类别过滤器,以便显示每个类别的作品。

它与数据过滤器配合使用,触发如下工作:

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

相关文章:

ruby-on-rails - spring rspec连接不上数据库

ruby - ruby 中的欧拉 #3。我对 ruby 有什么不了解的?

ruby - 为什么部分符号 (§) 无法正确读取,具体取决于它的创建位置?

javascript - Rails 4 确认按钮,单击后会显示继续按钮

ruby-on-rails - 将复杂的 has_many 关系移植到 Rails > 4.1(没有 finder_sql)

ruby-on-rails - Rails 中需要返回 JSON 格式的 404 错误

ruby-on-rails - Ruby 包含范围

php - 在mysql中将camelcase表和列名转换为snake case

ruby - 正则表达式排除某个子字符串之前存在的子字符串

ruby - redis 键没有过期