【问题标题】:Ruby on Rails: Uniqueness of elements in drop down menuRuby on Rails:下拉菜单中元素的唯一性
【发布时间】:2012-07-18 08:44:36
【问题描述】:
我对 ROR 很陌生,我在使下拉菜单中的元素具有唯一性时遇到了问题。该菜单允许用户从数据库中选择公司。目前,菜单列出了数据库中的每家公司,因为数据库多次保存同一家公司,而我只希望该公司出现一次。
<%= f.label :company_name %><br />
<%= f.select( :company_name, Company.all.map {|c| [c.company_name]} ) %>
我知道这应该很容易解决,但我似乎找不到答案。希望有人可以提供帮助。
提前致谢。
【问题讨论】:
标签:
ruby-on-rails
ruby
database
menu
unique
【解决方案1】:
而不是调用uniq!在获取的数组上,我宁愿使用范围来做到这一点......
在您的模型中:
named_scope :unique_by_name, :select => 'DISTINCT name', :order => 'name ASC'
那么你可以使用:
Company.unique_by_name.map { |company| company.name }
这样做的好处是可以直接从您的数据库后端选择独特的公司作为独特的,而不是昂贵地检索它们并在之后使用 uniq 过滤它们!方法。
【解决方案2】:
你可以使用:
Company.all.map {|c| c.company_name}.uniq!
但请注意公司的 ID 以及您将如何使用它们。
希望对你有帮助!