我知道删除select form_tag params中所有重复字符串的最佳方法。
我尝试了.uniq
和.distinct
但是,它不起作用。
<%= select_tag(:city, options_for_select(@customers.where(user: current_user).collect{ |b| [b.city, b.city]}), {:prompt => "City", :class => "form-control select-search"}) %>
我的select_tag
为每位客户提供相同的城市。
答案 0 :(得分:1)
使用collect
(map)代替ActiveRecord查询结果,您可以使用pluck
这样返回一个包含所选属性的数组,然后您可以使用uniq
,就像:
Customer.where('user = ?', current_user).pluck(:city).uniq
# ['city1', 'city2', 'city3']
注意pluck和distinct也可以一起使用,它会将DISTINCT语句添加到查询中,并避免将uniq
方法链接到其结果:
Customer.where('user = ?', current_user).pluck('DISTINCT city')
# ['city1', 'city2', 'city3']
Customer.where('user = ?', current_user).distinct.pluck(:city)
# ['city1', 'city2', 'city3']