2012-07-09 63 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" } %>