Ruby on rails 使用Select2将ID传递给Rails

Ruby on rails 使用Select2将ID传递给Rails,ruby-on-rails,select2-rails,Ruby On Rails,Select2 Rails,这可能是一个愚蠢的问题。我在表单上有一个多值字段,具有以下Select2设置 jQuery('#mymodel_thing_ids').select2 multiple: true placeholder: "Select things" minimumResultsForSearch: -1 ajax: url: "/things.json" dataType: "json" results: (data, page) -> resul

这可能是一个愚蠢的问题。我在表单上有一个多值字段,具有以下Select2设置

jQuery('#mymodel_thing_ids').select2
  multiple: true
  placeholder: "Select things"
  minimumResultsForSearch: -1
  ajax:
    url: "/things.json"
    dataType: "json"
    results: (data, page) ->
      results: data
  formatResult: (data) -> data.name
  formatSelection: (data) -> data.name
提交包含我收到的选定内容的表单时

"thing_ids"=>"[],3,2"
i、 e.初始值(空方括号)和选定对象的ID。但我想有以下几点

"thing_ids"=>"[3,2]"
选择2可以吗?我做错了什么

更新


要避免在开始时使用大括号,请在创建输入元素时使用value=“”。

问题是Select2会发回一个项目的字符串列表,例如
“thing_id”=>“1,2,3”
。以这种方式使用Select2时,我要做的是为
thing\u tokens
thing\u tokens=
创建访问器方法,如下所示:

def thing_tokens
  thing_ids.join(",")
end

def thing_tokens=(token_string)
  self.thing_ids = token_string.split(",")
end

然后,在表单中,您将使其成为
:thing\u tokens
的输入,而不是
thing\u id
。如果您使用的是Rails 4,请确保在控制器中也允许使用
:thing\u token

尝试此
data.serialize()
。请看这里,这个答案实际上解决了这个问题,它将值设置为字符串,从而从值中首先删除
[]
。您可以通过将输入值设置为空字符串来避免这些大括号,即。