【发布时间】:2014-01-30 01:20:51
【问题描述】:
我正在尝试为网站构建购物车。我有购物车工作,所以你可以添加到购物车。我遇到的问题是当我尝试在购物车中结帐并尝试提交订单时。我收到以下错误:
OrdersController#create 中的 ActiveModel::MissingAttributeError
随着
无法写入未知属性`order_id'
问题是在我的orders_controller.rb 文件中突出显示这段代码
respond_to 做 |格式| 如果@order.save Cart.destroy(session[:cart_id]) session[:cart_id] = nil
我似乎无法修复这个错误。
下面是我orders_controller.rb文件中的create方法
def create
@order = Order.new(order_params)
@order.add_line_items_from_cart(@cart)
respond_to do |format|
if @order.save
Cart.destroy(session[:cart_id])
session[:cart_id] = nil
format.html { redirect_to store_url,
notice: 'Thank you for your order.' }
format.json { render action: 'show', status: :created, location: @order }
else
format.html { render action: 'new' }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
我的迁移文件
class AddOrderToLineItem < ActiveRecord::Migration
def change
add_column :line_items, :order, :reference
end
end
我的 order.rb 模型
class Order < ActiveRecord::Base
has_many :line_items, dependent: :destroy
validates :name, :address, :email, presence: true
PAYMENT_TYPES = [ "Check", "Credit card", "Purchase order" ]
validates :pay_type, inclusion: PAYMENT_TYPES
def add_line_items_from_cart(cart)
cart.line_items.each do |item|
item.cart_id = nil
line_items << item
end
end
end
migration order table
class CreateOrders < ActiveRecord::Migration
def change
create_table :orders do |t|
t.string :name
t.text :address
t.string :email
t.string :pay_type
t.timestamps
end
end
end
【问题讨论】:
-
我们可以看看您的订单型号吗? - 编辑:如迁移和实际模型文件本身(仅相关部分)。
-
class Order
-
请编辑您的问题。
-
由于某种原因无法制作代码块
-
每行代码前四个空格。没有制表符,因此只能缩进更多空格。另外,请包括您的迁移,我希望看到此表上的列。
标签: ruby ruby-on-rails-4