繁体   English   中英

如何从头开始使用country_select gem和simple_form?

[英]How do I get the country_select gem and simple_form to work from scratch?

我只想要一个简单的国家/地区下拉列表,出于我的目的(即将所选国家/地区中的州包括在内)优先考虑。

实际上,我只想要1或2个国家。

我正在使用Simple_Form,他们的文档说是为了获得对此的访问权限:

f.input :shipping_country, priority: [ "Brazil" ], collection: [ "Australia", "Brazil", "New Zealand"]

我只需要在我的Gemfile中包含它:

gem 'country_select'

但是我很困惑...我不必运行迁移就可以将国家/地区选择存储在我的Post模型中-我_form.html.erb针对哪个模型修改_form.html.erb

当我简单地做:

<%= f.input :country, as: :country, collection: [ "Australia", "Brazil", "New Zealand"] %>

no country method on Post错误no country method on Post遇到了一个no country method on Post 我必须将其添加到我的Post.rb

attr_accessor :country

如果我的记忆正确地为我服务,那么由于“强参数”而不再需要在Rails 4中做对了吗?

那行得通,但是现在collection:规范不起作用。 我仍然看到一长串国家。

请记住,我不必运行任何迁移即可修改Post.rb模型。 我不知道要添加哪些列。 我可以在“ Post模型中添加country, state, city ,还是要创建一个名为“ Country的新模型?

是否通过宝石中的YAML文件加载了有关宝石中的国家(国家代码,城市,州等)的所有信息?

我没有任何线索,文档稀疏。

所以我的问题很简单:

  1. 如何使这个simple_form集合起作用。
  2. 如何获得国家/地区的其他属性以表格形式显示(例如州和/或城市)?
  3. 我是否必须在某个地方的表中提供其他数据?
  4. 如何将用户选择的国家和城市/州与我的Post记录相关联?

谢谢。

解决方案1:

simple_form的文档与country_select 1.x一起使用。 要按照记录使用simple_form,请在gemfile中限制country_select的版本:

gem 'country_select', '~> 1.0'

然后bundle update country_select降级。

解决方案2:

如果要改为使用country_select 2.x,则将使用国家/地区代码,而不是国家/地区名称。 您的表单帮助器看起来与simple_form文档略有不同:

<%= f.input :country_code, as: :country, priority: ['BR'] %>

对于任何一种解决方案

确实需要在“帖子”模型中添加一列,以存储用户在数据库中选择的国家/地区。 数据类型将为字符串/ varchar。 您可以通过以下方式生成迁移:

rails generate migration AddCountryCodeToPost country_code:string

country_select只知道国家。

不是城市或州。

如果您希望用户提供州或城市,则可以让他们填写文本字段并以字符串形式存储提供的任何内容(您将在上面为模型添加这些列),或者构建自己的选择/自动完成系统。 有一个state_select宝石,但是您需要使用javascript或管道形式将其与country_select手动集成。 我不知道有哪个宝石可以提供按州/国家/地区提供的城市名称数据源,但很可能还有一些宝石。

注意

有关country_select 1.x和country_select 2.x之间的区别的更多信息,请参阅升级指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM