我对 ROR 很陌生,我在使下拉菜单中的元素独一无二时遇到了问题。该菜单允许用户从数据库中选择公司。目前,菜单列出了数据库中的每家公司,因为数据库多次保存同一家公司,而我只希望该公司出现一次。
<%= f.label :company_name %><br />
<%= f.select( :company_name, Company.all.map {|c| [c.company_name]} ) %>
我知道这应该很容易解决,但我似乎找不到答案。希望有人可以提供帮助。
提前致谢。
我对 ROR 很陌生,我在使下拉菜单中的元素独一无二时遇到了问题。该菜单允许用户从数据库中选择公司。目前,菜单列出了数据库中的每家公司,因为数据库多次保存同一家公司,而我只希望该公司出现一次。
<%= f.label :company_name %><br />
<%= f.select( :company_name, Company.all.map {|c| [c.company_name]} ) %>
我知道这应该很容易解决,但我似乎找不到答案。希望有人可以提供帮助。
提前致谢。
而不是调用 uniq! 在获取的数组上,我宁愿使用范围来执行此操作...在您的模型中:
named_scope :unique_by_name, :select => 'DISTINCT name', :order => 'name ASC'
然后你可以使用:
Company.unique_by_name.map { |company| company.name }
这样做的好处是可以直接从您的数据库后端选择唯一的公司作为唯一的公司,而不是昂贵地检索它们并在之后使用 uniq 过滤它们!方法。
你可以使用:
Company.all.map {|c| c.company_name}.uniq!
但要小心公司的 ID 以及您将如何使用它们。
希望能帮助到你!