groups_collection_select用于一个模型

时间:2016-02-02 00:16:02

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

好的,所以我有一个带有架构的模型:

  create_table "areas", force: :cascade do |t|
    t.string   "province"
    t.string   "city"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

条目看起来像这样(减去日期时间字段):

1, Ontario, Ottawa
2, Ontario, Toronto
3, Ontario, Hamilton
4, British Columbia, Vancouver
5, Ontario, Niagara Falls
6, British Columbia, Surrey
7, Alberta, Calgary
8, Alberta, Edmonton

如何创建groups_collection_select:

  1. 使用:city as text
  2. 列出所有区域
  3. 使用distinct:province
  4. 对区域进行分组
  5. 返回表单的area_id

1 个答案:

答案 0 :(得分:0)

我会使用一个名为simple_form的宝石,这样你就可以很容易地创建一个像这样的分组选择输入:

f.input :area, collection: @areas, as: :grouped_select, group_method: :last

将调用名为group_method中调用的方法以生成组中的项目,并且您的@areas集合需要遵循以下格式:

 { 'Ontario' => ['Ottawa', 'Toronto'] }