使用相同模型处理相同形式的不同参数

时间:2013-08-15 15:44:58

标签: ruby-on-rails forms ruby-on-rails-4 rails-activerecord

假设我有一个ProblemRestriction模型类。问题有许多限制,并接受限制的嵌套属性。 限制模型表示如下数学表达式:

  • X< 1
  • 1 <= X <= 2
  • 2&lt; X

当我通过表单创建Problem时,我还必须创建限制(总是3)。

对于限制表格,我填写数字。即:X < [Input a number] 请注意,第二个限制需要填充两个字段,但第一个和第三个只需要一个。 如何使用不同参数在问题控制器中创建每个限制? 对于第一个和第三个限制,我需要传递一个数字但是第二个我需要传递两个数字(也许和带有两个数字的数组)

如果我不清楚,请告诉我。

1 个答案:

答案 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>
  ]
}