模型对象的未定义方法 'add_product '
Undefined Method 'add_product ' for model object
我认为我的错误有点愚蠢,但它让我陷入困境。我正在使用 Rails 4 关注 Agile Web Development 并从中开发应用程序 Depot。我收到
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
另外,我想知道,不同模型的方法如何直接调用到单独的控制器中?
对象 cart 具有价值,我已经调试以确保错误行也存在该对象。
感谢您的帮助。
我发现了错误,这是我在Cart.rb中的错别字。我将该方法命名为 add_product's' 并在控制器中调用 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
另外,我想知道,不同模型的方法如何直接调用到单独的控制器中? 对象 cart 具有价值,我已经调试以确保错误行也存在该对象。 感谢您的帮助。
我发现了错误,这是我在Cart.rb中的错别字。我将该方法命名为 add_product's' 并在控制器中调用 add_product。