Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails4-如何为国家/地区创建列表框以及创建列表框的最佳实践方法?_Ruby On Rails_Html_Ruby On Rails 4_Listbox - Fatal编程技术网

Ruby on rails Rails4-如何为国家/地区创建列表框以及创建列表框的最佳实践方法?

Ruby on rails Rails4-如何为国家/地区创建列表框以及创建列表框的最佳实践方法?,ruby-on-rails,html,ruby-on-rails-4,listbox,Ruby On Rails,Html,Ruby On Rails 4,Listbox,我有一个带有姓名和电子邮件的用户模型。 现在我想在用户注册期间添加国家/地区列表框。 现在我可以列出所有用户。我想将“国家”列添加到模型中,因为我想稍后创建一个视图,用户可以在该视图中根据国家搜索其他用户 我不是在使用Desive gem 我知道要做的步骤,但我不知道哪一个是正确的方法。 我应该将国家存储在数据库中吗 首先添加列 rails generate migration add_country_to_users country:<what_type_?> 然后在模型中添加验

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

我不是在使用Desive gem

我知道要做的步骤,但我不知道哪一个是正确的方法。 我应该将国家存储在数据库中吗

首先添加列

rails generate migration add_country_to_users country:<what_type_?>
然后在模型中添加验证

app/models/user.rb
validates :country, inclusion: %w(full_list?)
在注册表中添加列表框

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

请帮忙。谢谢

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

例如:

countries:
  us: United States
  ger: Germany
您可以在初始化器中加载文件

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


或者只使用这个gem

您对您概述的方法有什么具体的关注/问题?@J0e3gan如何存储国家/地区列表?如何在视图中列出它们?对不起。你能告诉我“美国,德国”应该放在哪里吗?.yml文件中应该放什么,数据库中应该放什么(对不起,我是个新手。但如果你能指出一些资源,我会学习和理解的。你可以把它放在
/config
目录中。你可以将国家代码保存到数据库中,并从yml文件中获取国家名。)
app/controllers/users_controller.rb
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation, :country)
end
countries:
  us: United States
  ger: Germany
CONFIG = HashWithIndifferentAccess.new(YAML.load(File.read(path_to_file)))`