【问题标题】:How do I get the country_select gem and simple_form to work from scratch?如何让 country_select gem 和 simple_form 从头开始​​工作?
【发布时间】:2014-11-04 13:53:44
【问题描述】:

我只想要一个简单的国家下拉菜单,根据我的目的优先考虑(即包括所选国家/地区内的州)。

事实上,我只想要 1 或 2 个国家/地区。

我正在使用 Simple_Form 并且他们的文档说为了访问这个:

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

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

gem 'country_select'

但我很困惑...我不必运行迁移来将国家/地区选择存储在我的 Post 模型上 - 我将修改我的 _form.html.erb 的模型是什么?

当我这样做时:

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

我收到了no country method on Post 错误。我必须将此添加到我的Post.rb

attr_accessor :country

如果我没记错的话,因为强参数,我应该不再需要在 Rails 4 中这样做,对吧?

这可行,但现在collection: 规范不起作用。我仍然看到一长串国家/地区。

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

Gem 中有关国家/地区(国家代码、城市、州等)的所有这些信息是否通过 Gem 中的 YAML 文件加载?

我不知道,文档也少得可怜。

所以我的问题很简单:

  1. 如何让这个 simple_form 集合正常工作。
  2. 如何让国家/地区的其他属性出现在表单中(例如州和/或城市)?
  3. 我是否必须在某处的表格中提供这些其他数据?
  4. 如何将用户选择的国家和城市/州与我的Post 记录相关联?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 simple-form


    【解决方案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'] %>
    

    对于任一解决方案

    确实需要在您的 Post 模型中添加一列来存储用户在您的数据库中选择的国家/地区。数据类型将是字符串/varchar。您可以使用以下内容生成迁移:

    rails generate migration AddCountryCodeToPost country_code:string
    

    country_select 只知道国家。

    不是城市或州。

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

    注意

    有关 country_select 1.x 和 country_select 2.x 之间差异的更多信息,请参阅upgrade guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多