如果我定义input name="temp[10]"
,我如何在控制器中接收此输入?
使用params []
<input type="checkbox" value="100" name="temp[10]"></input>
答案 0 :(得分:2)
尝试params['temp']['10']
,它应该可以解决问题。
Rails将带有[]
括号的参数转换为哈希值。因此,您的控制器会收到"temp"=>{"10"=>"100"}
。
这样的输入:
<input type="checkbox" value="100" name="temp[10]"></input>
<input type="checkbox" value="value for 20" name="temp[20]"></input>
<input type="checkbox" value="value for 30" name="temp[30]"></input>
将导致以下控制器参数(如果已检查所有内容):
"temp"=>{"10"=>"100", "20"=>"value for 20", "30"=>"value for 30"}
所以访问它:
params['temp']['10'] # holds "100"
params['temp']['20'] # holds "value for 20"
答案 1 :(得分:0)
params
对象是哈希,这意味着您传递给控制器的所有参数都将被分配一个密钥。
您的代码应该使用Rails' helpers:
<%= check_box_tag "temp[10]", "100" %>
如在另一个答案中所提到的,这将创建params哈希:
params: {
temp: {
10: "100",
x: "y"
}
}
..您可以使用params[:temp][:10]
或
params[:temp].each do |k,v|
puts "#{k}:#{v}"
end
......或......
def temp_params
params.require(:temp).permit(:10, :20, :30)
end