我收到以下错误:
ActiveRecord::SerializationTypeMismatch at /classifications
Attribute was supposed to be a Array, but was a ActionController::Parameters. -- {"1"=>"pumpkin text"}
在我的分类模型中,我有以下序列化,它对应一个名为default_fields的文本类型的mysql列:
serialize :default_fields, Array
在我看来,name属性如下:
<input id="classification_default_fields_n" name="classification[default_fields][1]" type="checkbox" value="pumpkin text">
我可以有多个这样的字段:
<input id="classification_default_fields_n" name="classification[default_fields][2]" type="checkbox" value="cucumber text">
<input id="classification_default_fields_n" name="classification[default_fields][3]" type="checkbox" value="orange text">
如您所见,我期待变量default_fields中的字符串数组。但是,它不会将这些字段作为数组进行尝试。它将它们视为键/值对的散列。
我该如何解决这个问题?
答案 0 :(得分:0)
好的,我现在明白了。如果要发送数组,则括号必须为空,如下所示:
classification[default_fields][]"
如果要发送散列,则方括号必须包含表示键的值,并且值由输入数据表示:
classification[default_fields][1]
现在,如果要发送哈希的集合(哈希),则括号中的值表示其中一个哈希元素的键:
classification[default_fields[1][key1]]
classification[default_fields[2][key2]]
还要为您想要的内容添加正确的序列化:
serialize :default_fields, Hash
# or
serialize :default_fields, Array