簡體   English   中英

屬性應該是一個數組,但是是一個ActionController :: Parameters

[英]Attribute was supposed to be a Array, but was a ActionController::Parameters

我收到以下錯誤:

ActiveRecord::SerializationTypeMismatch at /classifications
Attribute was supposed to be a Array, but was a ActionController::Parameters. -- {"1"=>"pumpkin text"} 

在我的分類模型中,我有以下序列化,對應於名為text_types的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM