gpt4 book ai didi

ruby-on-rails - 递归/树状强参数?

转载 作者:行者123 更新时间:2023-12-04 12:22:14 24 4
gpt4 key购买 nike

有没有办法为 Rails 4 中的树结构指定任意深度的强参数?例如,我将如何指定如下内容:

{
"node": {
"name": "parent",
"nodes": [
{ "name": "child1", "nodes": []},
{ "name": "child2", "nodes": [
{"name": "grandchild", "nodes": []}
]}
]
}
}

允许每个节点有一个名称属性和一个节点属性?

最佳答案

可能有一个更干净的解决方案来解决这个问题,但这是我目前的工作。一般的想法是计算我的嵌套深度,然后根据该数字自动生成正确的嵌套哈希。所以按照你的例子:

def count_levels(node_params)
if !node_params[:nodes].nil?
max = 0
node_params[:node_parameters].each do |child_params|
count = count_levels(child_params[1])
max = count if count > max
end
return max + 1
else
return 0
end
end

def node_params
node_attributes_base = [:id, :name]
nodes = []
(1..count_levels(params[:node])).each do |val|
nodes = node_attributes_base + [node_attributes: nodes]
end
params.require(:node).permit(:id, :name, node_attributes: nodes)
end

(上面的例子可以清理得更多,因为它基于我的代码,其中顶层没有相同的参数。因为它在我的系统上工作,所以我保留了它。)

关于ruby-on-rails - 递归/树状强参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17657306/

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