Ruby on rails rails—如何接收像';名称=“名称”;温度[10]”';在控制器中使用参数

Ruby on rails rails—如何接收像';名称=“名称”;温度[10]”';在控制器中使用参数,ruby-on-rails,ruby,Ruby On Rails,Ruby,如果我定义了input name=“temp[10]”,我如何在控制器中接收此输入? 使用参数[] <input type="checkbox" value="100" name="temp[10]"></input> 试试参数['temp']['10'],它应该可以做到这一点 Rails将带有[]方括号的参数转换为散列。因此,您的控制器接收类似于“temp”=>{“10”=>“100”}的内容 这种投入: <input type="checkbox" valu

如果我定义了
input name=“temp[10]”
,我如何在控制器中接收此输入? 使用参数[]

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

试试
参数['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>
因此,访问它:

params['temp']['10'] # holds "100"
params['temp']['20'] # holds "value for 20"

params
对象是散列,这意味着传递给控制器的任何参数都将被分配一个键

您的代码应使用:

。。您可以使用
参数[:temp][:10]
访问它,或者:

params[:temp].each do |k,v|
   puts "#{k}:#{v}"
end
。。。或者

def temp_params
   params.require(:temp).permit(:10, :20, :30)
end

temp[NUMBER]中的数字经常会更改。那我该怎么办呢?我想要一个可以接收所有数字的解决方案…我已经更新了答案,您将以散列形式接收所有这些数字。那么我是否需要控制器中的参数['temp']['10']['20']['30']['..?有许多数字。例如,temp[10]可以检查/取消检查。那么我如何接收这些数字?不,要获取单个值,请使用:
params['temp']['10']
params['temp']['20']
params['temp']['30']
。要将所有值作为一个数组来获取,请使用:
params['temp']。至少在ruby 2.2.3中,值
会生成语法错误,因此您可能只需使用字符串
'10'
params: {
   temp: {
     10: "100",
      x: "y"
   }
}
params[:temp].each do |k,v|
   puts "#{k}:#{v}"
end
def temp_params
   params.require(:temp).permit(:10, :20, :30)
end