rails 数组中的多个选择器

rails Multiple selector from an array

我想创建一个多 selection 字段,值存储在数组中而不是数据库中,我设法 select 多个值并将它们保存在数据库中但它们被保存为字符串而不是数组。

我如何在编辑个人资料时检索它们?

@spoken_languages_datas = [["Allemand", 0], ["Anglais", 1], ["Anglais ( Australien )", 2], ["Anglais ( Royaume Uni )", 3], ["Arabe", 4], ["Chinois", 5], ["Espagnol", 6], ["Espagnol ( Chili )", 7], ["Danois", 8], ["Finlandais", 9], ["Français", 10], ["Français ( Canada )", 11], ["Grec  ", 12], ["Italien", 13], ["Japonais", 14], ["Portugais", 15], ["Portugais ( Brésil )", 16], ["Néerlandais", 17], ["Norvégien", 18], ["Russe", 19], ["Suédois", 20], ["Turc", 21]]

我的表格:

.row
  .col-6
    = form.label :spoken_languages, @spoken_languages_title
    = form.select(:spoken_languages, @spoken_languages_datas.each { |p| [p] }, {prompt: 'Select a language'}, {multiple: true, size: @spoken_languages_datas.count, style: 'height: 125px;'})

曾经存储在数据库中的值:

"[\"\", \"0\", \"1\", \"2\", \"3\"]"

您可以使用 eval 方法将您的字符串转换为数组(但使用该方法时要非常小心......您不应该使用它来操纵来自用户的数据 - 代码注入危险)。 但正如 Jean 已经指出的那样,我建议在您的模型上使用序列化,如下所示:

serialize :spoken_languages

这样,活动记录会为您处理,保存为字符串,并在您访问该属性时返回一个数组。祝你好运!