2015-11-17 80 views
0

我從數據庫中檢索值並將其綁定到haml中。我正在嘗試將下拉式選項中的值大寫。大寫下拉(選項)值

models.rb

class EnumValue < ActiveRecord::Base 

    attr_accessible :enum_type, :name, :gdsn 
    scope :countries, EnumValue.where(enum_type: "country").order(:name) 
end 

form.html.haml

.offset1.span2 
     = f.association :country, :collection => EnumValue.countries,:include_blank => "Select Country",:label => "Country of Origin",:selected =>@records.country_id ? @records.country_id, :input_html => {:onchange =>"setGdsnName(this.value,'country')"} 

席力圖召利用在HAML EnumValue.countries.capitalize,我得到了以下錯誤:undefined method capitalize for # ActiveRecord::Relation:0x123d0718>

任何人都可以告訴我如何使用活動記錄下拉大寫數值?

回答

5

使用mapcapitalize陣列中的每個值:

EnumValue.countries.map(&:capitalize) 

順便說一下您的使用情況titleize可能是更好的選擇,因爲它可以處理國名包括多個單詞:

"United States".capitalize 
#=> "United states" 

鑑於:

"United States".titleize 
#=> "United States" 

此外,你需要從返回的集合得到國名,因爲你countries不返回國名的數組,但實例EnumValue

EnumValue.countries.map { |c| [c.name.titleize, c.id] } 
+0

我試過「EnumValue.countries.map(:titleize)」在form.html.haml中。我收到以下錯誤「未定義的方法'titleize'爲#」。任何想法爲什麼發生這種情況。 – user2681579

+0

@ user2681579:我更新了我的答案。 – spickermann

+0

立即工作。解釋很好的答案! – user2681579