ruby-on-rails 在rails 7中,如何在用户表(colonne country)中存储完整的国家名称和gem 'select_country'?

zzoitvuj  于 2023-08-08  发布在  Ruby
关注(0)|答案(1)|浏览(102)

我有rails 7,安装了Devise、gem wicked和select_country。在我看来,views/after_register/step2.html.erb:

<%= simple_form_for(@user, url: wizard_path, method: :put) do |f| %>
  <%= f.input :location, placeholder: 'lieu' %>
   <%= f.input :country, as: :select, collection: country_options_for_select, include_blank: 'Pays', label: 'Pays' %>
  <%= f.input :photos, as: :text, placeholder: 'photos' %>
  <%= f.button :submit, 'Valider', class: 'btn btn-primary' %>
<% end %>

字符串
我使用gem“select_country”来显示一个select中的国家列表。我想在我的用户表中存储全名国家。但现在,它只存储“FR”。怎么办?在application_helper.rb中:

module ApplicationHelper
  def country_options_for_select
    countries = ISO3166::Country.all.map { |c| [c.translations['en'], c.alpha2] }
    countries
  end
end


我使用gem“select_country”来显示一个select中的国家列表。我想在我的用户表中存储全名国家。但现在,它只存储“FR”。怎么办?如何让它存储“法国”而不是“法国”?

vsdwdz23

vsdwdz231#

我想请你仔细检查一下,如果你真的想保存名字,而不是alpha2。您可以在用户区域设置中在您想要显示的任何视图中将其呈现为全名。这样更灵活。
但是,如果您确实想保存国家名称为英文,而不是alpha2,您可以将ApplicationHelper更改为:

module ApplicationHelper
  def country_options_for_select
    countries = ISO3166::Country.all.map { |c| [c.translations['en'], c.common_name] }
    countries
  end
end

字符串
或者对两者都使用[c.translations['en']
请参阅gems代码上的line 109
# @return [String] the “common name” of this Country in English.

相关问题