这可能是一个虚拟问题。我的表单上有一个多值字段,具有以下 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_tokens
和 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,请确保您还允许在 Controller 中使用 :thing_tokens
。
关于ruby-on-rails - 使用 Select2 将 ID 传递给 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21755938/