Austin Govella
2006-Jul-24 05:06 UTC
[Rails] Newbie error: undefined local variable or method
When I add an item to the shopping cart, I get an error: undefined local variable or method `cart_item'' for #<#<Class:0x3715a78>:0x3715a48> Session info says the cart being updated properly. I''m just not able to output two variables: <%= cart_item.quantity %> × <%= h(cart_item.title) %> I did some research, and I can grasp that local variables aren''t accessible here, but I''m not sure how to troubleshoot and find where the problem occurs. (I''m coming from php and coldfusion, so maybe my head is warped in the wrong direction.) One thing that throws me is that cart_item is a class (CartItem), not a var or a method...??? Code included below for reference. The code starts with the Store controller: def add_to_cart @cart = find_cart @product = Product.find(params[:id]) @cart.add_product(@product) end The add_product method is in the Cart model: class Cart include Reloadable attr_reader :items def initialize @items = [] end def add_product(product) existing_product = @items.find {|item| item.product == product} if existing_product existing_product.increment_quantity else @items << CartItem.new(product) end end end The cart_item.quantity and cart_item.title come from the CartItem model: class CartItem include Reloadable attr_reader :product, :quantity def initialize(product) @product = product @quantity = 1 end def increment_quantity @quantity += 1 end def title @product.title end def price @product.price * @quantity end end Thanks in advance for any assistance, -- Austin Govella Thinking & Making: IA, UX, and IxD http://thinkingandmaking.com austin.govella@gmail.com
Zack Chandler
2006-Jul-24 05:10 UTC
[Rails] Newbie error: undefined local variable or method
Austin, You need to do: <%= @cart_item.quantity %> × <%= h(@cart_item.title) %> Zack On 7/23/06, Austin Govella <austin.govella@gmail.com> wrote:> When I add an item to the shopping cart, I get an error: > > undefined local variable or method `cart_item'' for > #<#<Class:0x3715a78>:0x3715a48> > > > > Session info says the cart being updated properly. I''m just not able > to output two variables: > <%= cart_item.quantity %> × <%= h(cart_item.title) %> > > I did some research, and I can grasp that local variables aren''t > accessible here, but I''m not sure how to troubleshoot and find where > the problem occurs. (I''m coming from php and coldfusion, so maybe my > head is warped in the wrong direction.) > > One thing that throws me is that cart_item is a class (CartItem), not > a var or a method...??? > > Code included below for reference. > > > > The code starts with the Store controller: > > def add_to_cart > @cart = find_cart > @product = Product.find(params[:id]) > @cart.add_product(@product) > end > > > > The add_product method is in the Cart model: > > class Cart > include Reloadable > attr_reader :items > > def initialize > @items = [] > end > > def add_product(product) > existing_product = @items.find {|item| item.product == product} > if existing_product > existing_product.increment_quantity > else > @items << CartItem.new(product) > end > end > end > > > > The cart_item.quantity and cart_item.title come from the CartItem model: > > class CartItem > include Reloadable > attr_reader :product, :quantity > > def initialize(product) > @product = product > @quantity = 1 > end > > def increment_quantity > @quantity += 1 > end > > def title > @product.title > end > > def price > @product.price * @quantity > end > end > > > > Thanks in advance for any assistance, > -- > Austin Govella > Thinking & Making: IA, UX, and IxD > http://thinkingandmaking.com > austin.govella@gmail.com > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >