【问题标题】:select2 simple_form and initial selected with remote dataselect2 simple_form 和初始选择远程数据
【发布时间】:2025-11-22 16:35:01
【问题描述】:

我在我的应用程序中使用了 simple_form 和 select2 ,到目前为止它工作正常。

我有这个代码:

  <%= f.association :location_from,
    collection: @model.locations,
    label_method: :select_label,
    value_method: :id,
    include_blank: false,
    label: 'From Location',
    class: 'select form-control'
  %>

还有我的javascript:

$('#pipeline_segment_location_from_id').select2({
  placeholder: 'Select a From Location...',
  allowClear: false,
  multiple: false,
  ajax: {
    url: '/locations/select.json',
    dataType: 'json',
    data: function(params) {
      return {
        'q[loc_cont]': params.term,
        page: params.page
      };
    },
    processResults: function(data) {
      return {
        results: $.map(data, function(item) {
          return {
            text: item.text,
            id: item.id
          };
        })
      };
    }
  }
});

下拉菜单按预期工作(即 ajax 等)。记录保存等问题是当我再次编辑记录时,选择为空白,相关记录未加载到选择中。我想我在这里遗漏了一些基本的东西,但我似乎无法弄清楚。

更新

我在这方面工作迟到了。两个问题-我传递了@model.locations,它是从另一个不相关的选择中复制的,该选择预加载了错误的选项。我需要做的就是按照下面接受的答案添加selected:

  <%= f.association :location_from,
    selected: @model.location_from_id,
    label_method: :select_label,
    value_method: :id,
    include_blank: false,
    label: 'From Location',
    class: 'select form-control'
  %>

【问题讨论】:

    标签: ruby-on-rails jquery-select2 simple-form


    【解决方案1】:

    你可以传递一个额外的参数selected: some_ids。喜欢

    = f.association :location_from, collection: @model.locations, selected: @record.map(&:location_id), ....
    

    【讨论】:

    • 见上文 - 我在你回答的同时发现了。我实际上已经厌倦了,但是我指定 collection: 的错误阻止了它的工作。