rails - 如何接收" name =" temp [10]"'等数据。控制器由params

时间:2015-11-12 01:33:54

标签: ruby-on-rails ruby

如果我定义input name="temp[10]",我如何在控制器中接收此输入? 使用params []

 <input type="checkbox" value="100" name="temp[10]"></input>

2 个答案:

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