2016-04-23 4 views
0

enter image description here Я думаю, что моя ошибка глупо, но это заставляет меня застрять. Я следую Agile Web Development с Rails 4 и разрабатываю приложение Depot из него. Я получаюНеопределенный метод 'add_product' для объекта модели

undefined method `add_product' for #<Cart:0x007f2ee4cfb8f8> 

ошибка. Мой код выглядит следующим образом,

class LineItemsController < ApplicationController 

def create 
    find_cart 
    product = Product.find(params[:product_id]) 
    byebug 
    @line_item = @cart.add_product(product.id) // line with error 
    @line_item.product = product 
    respond_to do |format| 
     if @line_item.save 
      format.html {redirect_to @line_item.cart, 
          notice: 'Line Item was succesfully created'} 
      format.json {render json: @line_item, 
          status: :created, location: @line_item} 
     else 
      format.html {render action: "new"} 
      format.json {render json: @line_item.errors, 
         status: "Unprocessable Entry"} 
     end 
    end 
end 
end 

Cart.rb

class Cart < ActiveRecord::Base 
has_many :line_items, dependent: :destroy 

def add_products(product_id) 
    current_item = line_items.find_by_product_id(product_id) 
    if current_item 
     current_item.qunatity += 1 
    else 
     current_item = line_items.build(product_id: product_id) 
    end 
    current_item 
end 
end 

Кроме того, я хочу знать, как может метод от другой модели непосредственно под отдельный контроллер? Объект тележки имеет значение, я отлаживался, чтобы убедиться, а также строка ошибки также содержит объект. Спасибо за помощь.

ответ

0

Я нашел ошибку, это была опечатка, которую я сделал в Cart.rb. Я назвал метод add_product's 'и вызывал add_product в контроллере.