2012-07-18 43 views
2

我對ROR非常陌生,而且我遇到了一個問題,使得我的下拉菜單中的元素是唯一的。該菜單允許用戶從數據庫中選擇公司。目前,菜單列出數據庫中的每個公司,因爲數據庫多次擁有同一家公司,而我只希望這家公司出現一次。Ruby on Rails:下拉菜單中元素的唯一性

<%= f.label :company_name %><br /> 
<%= f.select(:company_name, Company.all.map {|c| [c.company_name]}) %> 

我知道這應該是很容易解決,但我似乎無法找到答案。希望有人能幫助。

在此先感謝。

回答

0

你可以使用:

Company.all.map {|c| c.company_name}.uniq! 

但要注意與本公司的ID和如何你打算使用它們。

希望它有幫助!

+0

完美,非常感謝! – Jazz 2012-07-18 08:52:11

4

而不是調用uniq!已取得的陣列上,我寧願用一個範圍來做到這一點... 在你的模型:

named_scope :unique_by_name, :select => 'DISTINCT name', :order => 'name ASC' 

然後你可以使用:

Company.unique_by_name.map { |company| company.name } 

這樣做的優點來選擇獨特公司從數據庫後端直接唯一,而不是昂貴地檢索它們,然後使用uniq過濾它們!方法。

+0

這是更好的答案。 – deefour 2012-07-26 20:08:08

+0

我也相信:) – Doodloo 2014-08-07 12:12:59