gem'country_select',github:'stefanpenner / country_select'不能使用rails 4

时间:2015-04-07 09:05:16

标签: html ruby-on-rails rubygems rails-4-2-1

我在我的gem文件中使用gem 'country_select', github: 'stefanpenner/country_select',在我的表单中,我已将其定义为:

<%= form_for(@account_detail) do |f| %>

  <div class="field">
    <%= f.label :city %><br>
    <%= f.text_field :city %>
  </div>
  <div class="field">
    <%= f.label :zip %><br>
    <%= f.number_field :zip %>
  </div>
  <div class="field">
    <%= f.label :first_name %><br>
    <%= f.text_field :first_name %>
  </div>
  <div class="field">
    <%= f.label :last_name %><br>
    <%= f.text_field :last_name %>
  </div>
  <div class="field">
    <%= f.label :country %><br>
    <%= f.country_select("account_detail", "country") %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

提交给出错误ActionView::Template::Error (wrong number of arguments (4 for 0)):

哪种宝石最适合展示所有国家?

3 个答案:

答案 0 :(得分:1)

我会用:

<%= f.country_select :country %>

如果您想优先选择select中的某些国家/地区,请将它们传入数组:

 <%= f.country_select :country, {priority_countries: %w(<COUNTRY CODE i.e. US>), prompt: 'Select Country'} %>

如果您愿意,可以添加class: 'your-class'id或其他任何字段。希望能帮助到你。

答案 1 :(得分:1)

这应该做!

<%= f.country_select :country, { priority_countries: ["GB", "US"], selected: "GB" } %>

答案 2 :(得分:0)

我通过在我的模型中添加此方法解决了这个问题:

def country_name
    country = ISO3166::Country[country_code]
    country.translations[I18n.locale.to_s] || country.name
  end

并在视图中更改给定的行:

<%= f.country_select("account_detail", "country") %>

到此:

<%= f.country_select :country, format: :with_alpha2 %>

希望这对那些将面临这个问题的人有所帮助。