ruby-on-rails - 使用 Select2 将 ID 传递给 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) ->
      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,请确保您还允许在 Controller 中使用 :thing_tokens

关于ruby-on-rails - 使用 Select2 将 ID 传递给 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21755938/

相关文章:

ruby-on-rails - 加载任何 yaml 文件时出现未知别名

ruby-on-rails - 使用 rspec 将日期时间字段测试为 JSON 字符串

ruby-on-rails - 验证选项的存在

jquery - Rails select2 ajax 标签

jquery - 使用 jquery 以编程方式选择 select2 选项

ruby-on-rails - Omniauth facebook - 身份验证信息字段

ruby-on-rails - 如何在 Rails 中将 will_paginate 与嵌套资源一起使用?

ruby-on-rails - 如何在 Rails 的独立表中实现多选?

jquery - 如何为 select2 添加占位符?

javascript - Aria 属性不会添加到结果中