Rails4 - 如何创建以及为国家/地区创建列表框的最佳做法?

时间:2014-11-12 16:34:53

标签: ruby-on-rails html5 ruby-on-rails-4 listbox

我有一个名字和电子邮件的用户模型 现在我想在用户注册期间添加国家/地区列表框 现在我可以列出所有用户。我想将国家/地区列添加到模型中,因为我想稍后创建一个视图,用户可以根据国家/地区搜索其他用户。

我没有使用设计宝石。

我知道要做的步骤,但我不知道哪种方法正确。 我应该将国家/地区存储在数据库中吗?

首先添加列

rails generate migration add_country_to_users country:<what_type_?>

然后迁移

bundle exec rake db:migrate

然后在模型中添加验证

app/models/user.rb
validates :country, inclusion: %w(full_list?)

以注册表格添加列表框

app/views/users/new.html.erb
<%= f.label :country %>
<%= f.f.select :country %>

以更新形式添加列表框

app/views/users/edit.html.erb
<%= f.label :country %>
<%= f.f.select :country %>

在强力参数中添加

app/controllers/users_controller.rb
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation, :country)
end

请帮助。感谢

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是将其存储在某个.yml文件中,并将国家/地区代码存储在特定用户的数据库中。

例如:

countries:
  us: United States
  ger: Germany

您可以在初始化程序中加载文件,

CONFIG = HashWithIndifferentAccess.new(YAML.load(File.read(path_to_file)))`

<强>更新

或只是使用此gem https://github.com/stefanpenner/country_select