假设我有一个Problem
和Restriction
模型类。问题有许多限制,并接受限制的嵌套属性。
限制模型表示如下数学表达式:
当我通过表单创建Problem
时,我还必须创建限制(总是3)。
对于限制表格,我填写数字。即:X < [Input a number]
请注意,第二个限制需要填充两个字段,但第一个和第三个只需要一个。
如何使用不同参数在问题控制器中创建每个限制?
对于第一个和第三个限制,我需要传递一个数字但是第二个我需要传递两个数字(也许和带有两个数字的数组)
如果我不清楚,请告诉我。
答案 0 :(得分:0)
您可以使用空数组设置输入的名称:
number_field_tag 'problem[restrictions][1][]', 0
number_field_tag 'problem[restrictions][1][]', 5
然后在你的ProblemController中你应该收到这样的参数:
params[:problem][:restrictions][1]
# => contains the 2 values serialized as array
所以完整的表格将是:
X <
<%= number_field_tag 'problem[restrictions][0]', 0 %>
<%= number_field_tag 'problem[restrictions][1][]', 0 %>
<= X <=
<%= number_field_tag 'problem[restrictions][1][]', 5 %>
<%= number_field_tag 'problem[restrictions][2]', 0 %>
< X
你最终将获得以下参数:
params = {
problem: { #all the Problem attributes filled in the form },
restrictions:
[
<value of first input>,
[<value of second input>, <value of third input>],
<value of fourth input>
]
}