选择 2 个提交值而不是 id



我有Rails应用程序,我可以从中选择国家:

= f.input :country, label: t("heading.country"), as: :string, input_html: { class: 'select2', data: { allowadd: true, depth: 0, id: @post.location.country.id, url: search_locations_path } }

Select2 通过以下方式附加到此元素:

loadSelect2 = (selector = '.select2') ->
  $(@).select2
    ajax:
      data: (term, page) ->
        search: term
        depth: $(@).data('depth')
      results: (data, page) ->
        results: data
      url: $(@).data('url')
    createSearchChoice: (term, data) ->
      if $(data).filter(->
        @title.localeCompare(term) is 0
      ).length is 0
        id: term
        title: term
    createSearchChoicePosition: 'bottom'
    formatResult: (item) ->
      item.title
    formatSelection: (item) ->
      item.title
    initSelection: (element, callback) ->
      callback
        id: $(element).data('id')
        title: $(element).val()

因此,如您所见,我可以选择国家/地区或添加一个(如果没有可用的国家/地区)。此外,我正在从输入的val加载初始值,并从initSelection内部的data-id加载id。

当我选择国家/地区并提交表单时,一切正常:post_params['country']等于所选国家/地区的 ID,但是如果我提交表单而不更改所选值(保留默认值),则post_params['country']持有value,而不是id

我错在哪里以及如何解决?

将输入更改为:

= f.input :country, label: t("heading.country"), as: :string, input_html: { value: @post.location.country.id, class: 'select2', data: { allowadd: true, depth: 0, title: @post.location.country.title, url: search_locations_path } }

。因此,在输入的值中,您将存储初始选定元素的id,并且在数据属性中存储元素的标题data-title而不是data-id(当然,您可以保留data-id原封不动以备将来使用)。此外,您还需要重构initSelection函数以使用这些新值:

initSelection: (element, callback) -> callback id: $(element).val(), title: $(element).data('title')

相关内容

  • 没有找到相关文章

最新更新