Hello all.
I have the following code (taken from the depot tutorial then modified)
def add_dish( dish, type, qnty )
item = @items.find {|i| i.dish_id == dish.id && i.type == type }
if item
item.quantity += qnty.to_i
else
if type == ''Fresh''
item = Fresh.for_dish(dish)
else
item = Frozen.for_dish(dish)
end
item.order_id = 1
item.quantity = qnty.to_i
@items << item
end
@total_price += (dish.price * qnty.to_i)
end
The problem line is this:
item = @items.find {|i| i.dish_id == dish.id && i.type == type }
It appears my simple addition has messed it up (Go me!). Simply put the
above never finds a match even when one is there. I am sure it is a
simple syntax problem but I am not sure what.
Could anyone answer the obvious and put me out of my misery :)
Thanks
Jeff
--
Posted via http://www.ruby-forum.com/.
On Tuesday, February 28, 2006, at 12:33 AM, Jeff Jones wrote:>Hello all. > >I have the following code (taken from the depot tutorial then modified) > >def add_dish( dish, type, qnty ) > item = @items.find {|i| i.dish_id == dish.id && i.type == type } > if item > item.quantity += qnty.to_i > else > if type == ''Fresh'' > item = Fresh.for_dish(dish) > else > item = Frozen.for_dish(dish) > end > item.order_id = 1 > item.quantity = qnty.to_i > @items << item > end > @total_price += (dish.price * qnty.to_i) > end > > >The problem line is this: > >item = @items.find {|i| i.dish_id == dish.id && i.type == type } > >It appears my simple addition has messed it up (Go me!). Simply put the >above never finds a match even when one is there. I am sure it is a >simple syntax problem but I am not sure what. > >Could anyone answer the obvious and put me out of my misery :) > >Thanks > >Jeff > >-- >Posted via http://www.ruby-forum.com/. >_______________________________________________ >Rails mailing list >Rails@lists.rubyonrails.org >http://lists.rubyonrails.org/mailman/listinfo/railsJeff, Just a guess... If this is a model object and "items" is defined via "has_many" then you need to use "self.items" instead "@items". Roustem -- Posted with http://DevLists.com. Sign up and save your time!
> > Jeff, > > Just a guess... If this is a model object and "items" is defined via > "has_many" then you need to use "self.items" instead "@items". > > Roustem@items is just an array setup like in the depot tutorial. There is no model behind it. class Cart attr_reader :items attr_reader :total_price def initialize empty! end def empty! @items = [] @total_price = 0.0 end Jeff -- Posted via http://www.ruby-forum.com/.