在散列中包含 key/value 对和单个值
Include key/value pairs and single values in a hash
我有一个包含以下字段的嵌套属性表单:
- 巢穴[attr1][]
- 巢穴[attr2][]
- 巢穴[attr3]
(注意第三个属性不是数组)
在我的控制器中,强参数是这样写的:
params.require(:campaign).permit(
:somevalue,
nests_attributes: {
attr1: [],
attr2: [],
:attr3
}
)
当然,这不起作用,因为 attr1
和 attr2
使用 key/value 对来建立数组,而 attr3
是允许的单个值。
如何同时使用两者?
鉴于此参数:
{"campaign"=>{"somevalue"=>1, "nest"=>{"attr1"=>[1, 2, 3], "attr2"=>[1, 3, 4], "attr3"=>3}}}
你可以这样做:
params.require(:campaign).permit(
:somevalue,
nest: [:attr3, attr1: [], attr2: []]
)
你可能会觉得看到 []
里面有 attr1: []
很奇怪,但它在 Ruby 中是完全有效的语法。它将被解释为:
[:attr3, {:attr1=>[], :attr2=>[]}]
我有一个包含以下字段的嵌套属性表单:
- 巢穴[attr1][]
- 巢穴[attr2][]
- 巢穴[attr3]
(注意第三个属性不是数组)
在我的控制器中,强参数是这样写的:
params.require(:campaign).permit(
:somevalue,
nests_attributes: {
attr1: [],
attr2: [],
:attr3
}
)
当然,这不起作用,因为 attr1
和 attr2
使用 key/value 对来建立数组,而 attr3
是允许的单个值。
如何同时使用两者?
鉴于此参数:
{"campaign"=>{"somevalue"=>1, "nest"=>{"attr1"=>[1, 2, 3], "attr2"=>[1, 3, 4], "attr3"=>3}}}
你可以这样做:
params.require(:campaign).permit(
:somevalue,
nest: [:attr3, attr1: [], attr2: []]
)
你可能会觉得看到 []
里面有 attr1: []
很奇怪,但它在 Ruby 中是完全有效的语法。它将被解释为:
[:attr3, {:attr1=>[], :attr2=>[]}]