gpt4 book ai didi

ruby-on-rails - 属性应该是一个数组,但却是一个 ActionController::Parameters

转载 作者:行者123 更新时间:2023-12-04 18:05:10 25 4
gpt4 key购买 nike

我收到以下错误:

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 中有一个字符串数组。但是,它并没有尝试将这些字段作为数组。它将它们视为键/值对的散列。

我该如何解决这个问题?

最佳答案

好的,我明白了。如果你想发送一个数组,那么括号必须是空的,如下所示:

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

关于ruby-on-rails - 属性应该是一个数组,但却是一个 ActionController::Parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com