多个选定的数据不会出现

时间:2016-09-05 13:03:50

标签: ruby-on-rails json select2

我使用select2进行多项选择。我的问题是,我可以从json数据中选择多个值,我可以将这些数据保存在相关的模型列中。但是,当我想更新此模型时,所选数据不会出现。

我的json数据的一部分:

{
 - categories:[
   - {
       id:7,
       name:"Eğitim Bilimleri Enstitüsü"
     },
   - {
       id: 8,
       name: "Eğitim Yönetim Teftişi ve Planlaması 1. Yarıyıl"
     },
   ...
  ]
}

我有一个Moodle类(它不是来自ActiveRecord的继承,只是一个类,它有一些返回json数据的函数)。我想知道这是否正确。

在我的表单内容中:

<%= simple_form_for(@period) do |f| %>
...
    <%= f.input :moodle_connect_ids, collection: Moodle.categories.map {|p| [ p['name'], p['id'] ] }, input_html: {multiple: true} %>
...
<% end %>

我明确地将moodle_connect_ids设置为我的控制器中的数组:

params.require(:period).permit(..., :moodle_connect_ids => [])

在我的.js文件的内容中:

$("#period_moodle_connect_ids").select2({
  placeholder: "Moodle Dönem Bağlantılarını Seçiniz",
  multiple: true,
  allowClear: true
});

当我选择多个值并保存我的模型时,列的值如下所示:

> Period.last
=> #<Period:0x007fcf53a4d830
id: 25,
...
moodle_connect_ids: "[\"\", \"85\", \"120\"]" 
...

我走错了路吗?你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我已经想出了如何解决这个问题。

我在f.input中添加了选定的选项:

selected: @period.moodle_connect_ids? ? JSON.parse(@period.moodle_connect_ids).map(&:to_i) : []

输入的最后状态:

<%= f.input :moodle_connect_ids, collection: Moodle.categories.map {|p| [ p['name'], p['id'] ] }, input_html: {multiple: true}, selected: @period.moodle_connect_ids? ? @period.moodle_connect_ids.map(&:to_i) : [] %>
相关问题