2

这可能是一个愚蠢的问题。我在具有以下 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"

即初始值(空方括号)和选定事物的ID 。但我想关注

"thing_ids"=>"[3,2]"

Select2可以吗?我做错了什么?

更新

为避免在开头使用大括号,在创建输入元素时使用value="" 。

4

1 回答 1

3

问题是 Select2 发回一个字符串列表,例如"thing_ids" => "1,2,3". 以这种方式使用 Select2 时,我所做的是为thing_tokensand创建访问器方法thing_tokens=,如下所示:

def thing_tokens
  thing_ids.join(",")
end

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

然后,在您的表单中,您将使其成为输入,:thing_tokens而不是thing_ids. 如果您使用的是 Rails 4,请确保您:thing_tokens的控制器也允许。

于 2014-02-13T13:54:30.943 回答