使用 Select2 将 ID 传递到 Rails



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

问题是 Select2 发回一个字符串的项目列表,例如 "thing_ids" => "1,2,3" .以这种方式使用 Select2 时,我所做的是为 thing_tokensthing_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

相关内容

  • 没有找到相关文章

最新更新