我如何从阵列中的控制器获取ID

时间:2019-08-23 21:48:51

标签: ruby-on-rails ruby

我通过“提交”按钮发布此数据: 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]) 但什么都没得到结果

感谢您的帮助。

3 个答案:

答案 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"}]