提交以下参数
Parameters: {[...] "physicalinventario"=>{[...] "physicalinventarioitems_attributes"=>{"0"=>{"quantity"=>",85"}}}, "commit"
目标是拦截physicalinventarioitem
控制器create
操作中的数量参数,并在输入十进制值时清除可能的逗号
if params[:physicalinventario][:physicalinventarioitems_attributes][:quantity].include? ","
params[:physicalinventarioitem][:quantity] = params[:physicalinventario][:physicalinventarioitems_attributes][:quantity].tr!(',', '.').to_d
end
但是,语法错误,因为处理逗号后没有值。
答案 0 :(得分:1)
但如果您有多个数量,那该怎么办
例如:{"0"=>{"quantity"=>",85"},"1"=>{"quantity"=>",90"}}
所以,这里的答案也达到了多个嵌套属性的要求。
hash = {"physicalinventario"=>{"physicalinventarioitems_attributes"=>{"0"=>{"quantity"=>",85"},"1"=>{"quantity"=>",90"}}}}
您需要的代码,
hash["physicalinventario"]["physicalinventarioitems_attributes"].each do |key, value|
if value["quantity"].include? ","
value["quantity"] = value["quantity"].tr!(',', '.').to_f
end
end
以下是结果哈希
`{"physicalinventario"=>{"physicalinventarioitems_attributes"=>{"0"=>{"quantity"=>0.85}, "1"=>{"quantity"=>0.9}}}}`
答案 1 :(得分:0)
您似乎错过了链中的["0"]
来获取:数量。
应该是
params[:physicalinventario][:physicalinventarioitems_attributes]["0"][:quantity]
最方便的Rails方法来清理(规范化)模型中的数据。 要创建重复项,请点击此处How best to sanitize fields in ruby on rails