我有一些像这样的记录
"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>
我从数据库中获取数据,但我想我必须在我的控制器中更改某些内容,以便按照我想要的顺序获取我想要的信息,例如,如果我选择一个我想要获得的主管/主管/员工,但如果我选择一名员工,我只想找一名员工
答案 0 :(得分:1)
这是使用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>
但是我会说这段代码表明底层设计不佳。 您应该让数据库处理拉出唯一记录。