我有一些像这样的记录
"boss/supervisor/employee"
"boss"
"boss/supervisor"
我想将所有这些记录放入选择输入中而不重复...这是我已经完成的
在我的索引中我这样做了:
@jerarquy = Jerarquy.uniq.pluck(:name)
所以当我从 jerarquy 列中获取所有记录时:
<select>
<% @jerarquy.each do |jer| %>
<% jer.split('/').each do |j| %>
<option><%= j %></option>
<% end %>
<% end %>
</select>
我确实从数据库中获取数据,但我认为我必须更改 Controller 中的某些内容才能按照我想要的顺序获取我想要的信息,例如,如果我选择一个我想要获取的老板/supervisor 和/employee 也是,但如果我选择一名员工,我只想得到一名员工
最佳答案
这就是如何使用 flatten 将字段转换为单个数组,然后使用 .uniq
ary = ["boss/supervisor/employee", "boss", "boss/supervisor"]
ary.map { |string| string.split('/') }.flatten.uniq
=> ["boss", "supervisor", "employee"]
<小时/>
@jerarquy = Jerarquy.uniq.pluck(:name).map { |string| string.split('/') }.flatten.uniq
<select>
<% @jerarquy.each do |jer| %>
<option><%= j %></option>
<% end %>
</select>
但是我想说,这段代码表明底层设计很糟糕。 您应该让数据库处理提取唯一记录。
关于mysql - Rails activerecords 查询,行分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974714/