Mam taki problem nie wiem, czemu nie widzi u mnie metody
[code]undefined method `laliga’ for #Laliga:0x4b7c68c
d:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/attribute_methods.rb:260:in method_missing' D:/Ruby/projekty/zaklady/site/app/models/cart.rb:9:in
add_laliga’
D:/Ruby/projekty/zaklady/site/app/models/cart.rb:9:in each' D:/Ruby/projekty/zaklady/site/app/models/cart.rb:9:in
find’
D:/Ruby/projekty/zaklady/site/app/models/cart.rb:9:in add_laliga' D:/Ruby/projekty/zaklady/site/app/controllers/store_controller.rb:10:in
add_to_cart’[/code]
model cart.rb
[code]class Cart
attr_reader :items
def initialize
@items = []
end
def add_laliga(laliga)
current_item = @items.find { |item| item.laliga == laliga }
if current_item
current_item.increment_quantity
else
@items << CartItem.new(laliga)
end
end
end[/code]
model cart_item.rb
[code]class CartItem
attr_reader :laliga, :quantity
def initialize(laliga)
@laliga = laliga
@quantity = 1
end
def increment_quantity
@quantity += 1
end
def zdarzenie
@laliga.zdarzenie
end
def typ1
@laliga.typ1 * @quantity
end
def typx
@laliga.typx * @quantity
end
def typ2
@laliga.typ2 * @quantity
end
end[/code]
kontroler store_controller.rb
[code]class StoreController < ApplicationController
def index
@laligas = Laliga.find_laligas_for_sale
end
def add_to_cart
@cart = find_cart
laliga = Laliga.find(params[:id])
@cart.add_laliga(laliga)
end
private
def find_cart
session[:cart] ||= Cart.new
end
end[/code]
oraz widok add_to_cart.rhtml
[code]
Twój kupon
<% for cart_item in @cart.items %>
<%= cart_item.quantity %> × <% h(cart_item.zdarzenie) %> |
<% end %>
[/code]