我正在運行以下方法,並且我成功地將兩個參數(庫存,數量)傳入方法。不過,我錯誤地使用了.first
和.each
方法。我試圖用.select
來代替。每次與庫存ID來選擇購物車中物品:6Ruby選擇方法(對於數組)問題
可能的。每次更換:(不起作用)inventory_to_increment = @items.select{|item| item_id == inventory}
def increment_inventory_quantity(inventory, quantity)
inventory_to_increment = @items.each{|item| item.inventory == inventory}
unless inventory_to_increment.empty?
inventory_to_increment = inventory_to_increment.first
else
# error handling here
end
inventory_to_increment.quantity = quantity.to_i
end
我已經使用Ruby調試器,調試我的代碼:
inventory_to_increment = @ items.each {| item | item.inventory == 庫存}
p inventory = 6
除非inventory_to_increment .empty?
CartItem:0x102c4a4c0 @quantity=22, @inventory=#<Inventory id: 1
CartItem:0x102c49638 @quantity=2, @inventory=#<Inventory id: 8
CartItem:0x102c48918 @quantity=4, @inventory=#<Inventory id: 50
CartItem:0x102c47b80 @quantity=2, @inventory=#<Inventory id: 6
inventory_to_increment.first
CartItem:0x102c4a4c0 @quantity=22, @inventory=#<Inventory id: 1
inventory_to_increment.quantity = quantity.to_i
= 3
我試過幾個組合,我需要一些基本的Ruby陣列的指導。先謝謝你!
UPDATE輸出答案
inventory_to_increment = @items.select{|item| item.inventory_id == inventory}
(rdb:1) list
[21, 30] in /Users/justin/cart/app/models/cart.rb
21
22
23 def increment_inventory_quantity(inventory, quantity)
24 debugger
25
=> 26 inventory_to_increment = @items.select{|item| item.inventory_id == inventory}
27 unless inventory_to_increment.empty?
28 inventory_to_increment.first
29 end
30
(rdb:1) p @items
[#<CartItem:0x102df1828 @quantity=22, @inventory=#<Inventory id: 1>>, #<CartItem:0x102df09a0 @quantity=2, @inventory=#<Inventory id: 8>>, #<CartItem:0x102ded908 @quantity=21, @inventory=#<Inventory id: 50>>]
(rdb:1) p inventory
50
(rdb:1) p quantity
"11"
(rdb:1) p item.inventory.id
NameError Exception: undefined local variable or method `item' for #<Cart:0x102df18f0>
(rdb:1) p item.inventory_id
NameError Exception: undefined local variable or method `item' for #<Cart:0x102df18f0>
(rdb:1) next
/Users/justin/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/rescue.rb:162
rescue_action(exception)
也不要忘記'inventory_to_increment.save!'。 – 2010-01-18 20:56:03
嘗試將'item.inventory_id == inventory'改爲'item.inventory.inventory_id == inventory' – 2010-01-18 21:10:59