我的表单为可变长度集合的每个成员生成一个字段,并为输入字段分配集合成员ID的ID。即,
<input type="text" id="1" val="Value for collection member with id #1">
<input type="text" id="5" val="Value for collection member with id #5">
在控制器中,我试图通过迭代这样的集合来获取这些值:
collectors.each do |col|
amount = params[col.id]
# ...process this value
end
但是我在amount = params [col.id]时得到一个零值错误。我如何访问这些变量?
编辑我刚刚更改了它,所以我使用javascript生成KV对的哈希数组并将其粘贴到隐藏字段中,以便我的控制器可以对其进行评估。它有效,但从安全角度来看,这有多糟糕?
答案 0 :(得分:1)
替换
<input type="text" id="1" val="Value for collection member with id #1">
<input type="text" id="5" val="Value for collection member with id #5">
与
<input type="text" id="1" name="1" val="Value for collection member with id #1">
<input type="text" id="5" name="5" val="Value for collection member with id #5">
在控制器中
collectors.each do |col|
amount = params[col.id] if params[col.id]
# ...process this value
end
答案 1 :(得分:0)
而不是使用&#34;每个&#34;尝试:
amount = collectors.map(&:id)