2012-07-09 47 views
0

我想在我的Rails Web表單中包含國家選擇選擇框。 Ruby on Rails怎麼可能?我的表單是這樣的
Ruby on Rails Web表單中的國家選擇

<%= form_for :User, :url => {:action => :create } do |f| %>    
    <div class="field"> 
    <%= f.label :select_countries %><br /> 
    <%= f.select(:countries, country_list) %> 
    </div> 
    <%= f.submit "Create" %> 
<% end %> 

我可以用什麼來代替country_list?

回答

2
<%= f.country_select :country, ["United States"] %> 

它在爲誰工作country_select寶石

+0

[i18n country select](https://github.com/onomojo/i18n_country_select)允許你做同樣的事情,但是使用標準的雙字母代碼而不是國家的具體英文單詞:這個例子有一個字段「country」包含代碼,並且選擇框在頂部添加首選的國家/地區字段,以本地化的形式說「瑞典」。瑞典的關鍵是「SE」。 '= f.country_code_select(:country,[[I18n.t(:SE,:scope =>:countries),'SE']])' – olleolleolle 2013-06-03 14:19:29

1

用於提供過去的國家選擇功能的導軌。該功能已從核心中提取出來,現在已打包到country_select插件中。

使用插件啓用該功能。

+0

我已經嘗試過,但我不知道使用這些插件。 – 2012-07-09 09:50:20

+0

嘿,這是真棒寶石,這是我的作品,謝謝。 – 2014-08-21 09:59:13

4

我的意見是在數據庫中播種國家名單。

創建一個名稱爲'name'的模型國家。

在應用程序/模型/ country.rb

attr_accessible :name 

負載國脫離YAML文件和種子到數據庫列表。

在配置/ country.yml

- 
name: India 
name: Pakistan 
name: Cuba 
#add required country name 

以dB/seed.rb

COUNTRIES = YAML.load_file(Rails.root.join('config/country.yml')) 
COUNTRIES.each do |country| 
    Country.create(country) 
end 

運行

rake db:seed 

在用戶模型中添加COUNTRY_ID場(寫遷移添加字段)。

在應用程序/模型/ user.rb

class User < ActiveRecord::Base 
#associate user with country 
belongs_to :country 
end 

在您的新用戶表單中添加下面的代碼。

<%= f.select :country_id, Country.all.collect { |country| [country.name, country.id] }, 
    { :prompt => "Select Country" } %>