【发布时间】:2021-11-02 01:02:30
【问题描述】:
我有以下课程:
class ArticlesController < ApplicationController
def create
article = Article.new(article_params)
end
private
def article_params
params.permit(:name, :age, book: [])
end
end
我有一个名为 book 的字段,其中包含一个集合,后跟一个哈希 [{...}],在哈希对象内它可以包含任何随机属性,例如:
book_1 =
[
{
"id": "a1",
"type": "Color",
"title": "Live life cicle",
"content": "image_intro.png"
},
]
book_2 =
[
{
"id": "a2",
"email": "example@gmail.com",
"domain": "http://ddd.com"
}
]
...
book_7
[
{
"id": "a23",
"width": "3px",
"heigth": "5px",
"exist": true
}
]
我希望每次保存一本书时,无论它在哈希中包含什么属性,它都可以通过article_params,如果您能帮助我,我将不胜感激。
【问题讨论】:
-
这能回答你的问题吗? Rails - Strong Parameters - Nested Objects
-
虽然@JaredBeck 向您指出了来源,但我认为与您的问题相关的部分是“必须指定应该允许的嵌套属性。如果您只使用
permit指向嵌套属性散列的键,它将返回一个空散列。”(第 1162 行)和 “想象一个场景,其中有代表产品名称的参数和与之关联的任意数据的散列产品,并且您希望在文档中允许产品名称属性以及整个数据哈希”。 -
这意味着虽然您不能只使用
books: []并让它接受该数组中的任何内容。只要您的books值为{"0" => { "id": "a1","type": "Color","title": "Live life cicle","content": "image_intro.png"} , "1" => {"id": "a2","email": "example@gmail.com","domain": "http://ddd.com"}}等,您就可以使用books: {}。
标签: ruby-on-rails json ruby strong-parameters