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
这样,活动记录会为您处理,保存为字符串,并在您访问该属性时返回一个数组。祝你好运!
我想创建一个多 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
这样,活动记录会为您处理,保存为字符串,并在您访问该属性时返回一个数组。祝你好运!