我通过“提交”按钮发布此数据:
pesanans"=>{"14"=>{"id"=>"0", "harga"=>"18500", "jumlah"=>"6"}, "15"=>{"id"=>"0", "harga"=>"18000", "jumlah"=>"9"}}, "commit"=>"Submit"}"
如何从控制器获取ID值?
我尝试过:
@pesanan = Pesanan.find_by_id(params[:pesanans][:id])
但什么都没得到结果
感谢您的帮助。
答案 0 :(得分:0)
您应该使用strong params。
像这样在您的控制器中创建一个新方法:
def pesanans_params
params.require(:pesanans).permit(:harga, :jumlah)
end
现在您可以这样做:
@pesanan.update_attributes(pesanans_params)
它将创建允许字段的“白名单”
您也可以像pesanans_params[:harga]
一样直接通过它访问字段
答案 1 :(得分:0)
params[:pesanas]
的值是一个哈希,示例中有两个可能的:id
。如果您知道它们都一样,可以执行params[:pesanas].values.first[:id]
,但您的问题尚不清楚。
答案 2 :(得分:0)
您在一个请求中传递了两个ids
,如果您需要两者,则只需使用.where
查询。
但这将始终集中在第一个对象上,无论经过多少次。
@pesanan = Pesanan.find_by(id: params[:pesanans].keys.first.to_i)
示例:
#>irb
x = {"14"=>{"id"=>"0", "harga"=>"18500", "jumlah"=>"6"}, "15"=>{"id"=>"0", "harga"=>"18000", "jumlah"=>"9"}}
x.keys
=> ["14", "15"]
x.values
=> [{"id"=>"0", "harga"=>"18500", "jumlah"=>"6"}, {"id"=>"0", "harga"=>"18000", "jumlah"=>"9"}]