未定义的方法`prouct_price?'对于OrderItems类 - (OrderItemsController #create)

时间:2017-12-25 05:55:11

标签: ruby-on-rails cart

  CreateOrderItems Migration
  def change
    create_table :order_items do |t|
      t.integer :product_id
      t.integer :order_id
      t.decimal :unit_price
      t.integer :p_quantity
      t.decimal :total_price

      t.timestamps
    end
  end
	OrderItemsController
  def create
		@order = current_order
		@order_item =               @order.order_items.new(order_item_params)
		@order.save
		session[:order_id] = @order.id
	end
  	def order_item_params
		params.require(:order_item).permit(:product_id, :p_quantity)
	end
	OrderItem Model
  belongs_to :product
  def unit_price
		if persisted?
			self[:unit_price]
		else
			Product.product_price?
		end
	end

我已经定义了关联,但OrderItem的Create方法无法获取product_id。产品有很多订单项关系,请回答,我在做什么错误..? 谢谢

create_table "products", force: :cascade do |t|
    t.string "product_title"
    t.text "key_features"
    t.decimal "product_price"
    t.string "colour"
    t.string "main_material"
    t.integer "product_quantity"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

1 个答案:

答案 0 :(得分:1)

这只是一个简单的拼写错误。 在OrderItem模型的方法unit_price中,您使用的是Product.prouct_price

而不是你应该使用product.product_price。第一个错误是拼写错误,第二个错误是因为您使用Product而不是product来将相关产品用于OrderItem。

另外,我无法理解为什么你在OrderItem表中保留unit_pricetotal_price,因为你可以使用关联和简单的数学动态评估或计算出该值。因此,根据我的说法,没有必要为这些值制作列。