0

我看不到我错过了什么。我有嵌套项目的订单,这些项目每个都有一个种类。我想操作每个项目的 kind_id 参数,但“f[:kind_id]”总是返回 0。

@order.items.each do |f|
  f[:kind_id] =  Kind.find_by_name(f[:kind_id]).id
end

我得到的参数是

{"authenticity_token"=>"7wz7ARjwcVvCR/bpp/T04JQIQwHsMKDflF1eMCL8PTU=",
 "order"=>{"items_attributes"=>{"1271160144889"=>{"price"=>"2",
 "amount"=>"2",
 "text"=>"2",
 "kind_id"=>"fds",
 "_destroy"=>""}},
 "total_price"=>"4"}}

上面的参数当然是测试数据:)

4

1 回答 1

1

因为:kind_id是一个整数列,ActiveRecord 会自动将它解释为一个整数("fds".to_i #=> 0)。您应该添加attr_accessor :kind_name到 Item 模型并将表单字段切换为kind_name. 然后你可以做

@order.items.each do |f|
  f.kind = Kind.find_by_name(f.kind_name)
end
于 2010-04-13T15:35:50.550 回答