【发布时间】:2015-06-16 05:03:51
【问题描述】:
我正在按照敏捷开发这本书学习 ruby on rails。我做的最后一件事是,我创建了 Checkout 部分: 我将动作添加到控制器,以及模型实例变量的方法。一切都按预期工作,......在一定程度上。
当我插入姓名、地址、电子邮件地址和支付类型等值时,我收到一条错误通知,提示“项目无效”。
某些验证测试可能写错了。有人知道可能出了什么问题吗?
class Order < ActiveRecord::Base
has_many :line_items, dependent: :destroy
PAYMENT_TYPES = [ "Check", "Credit Card", "Purchase order"]
validates :name, :address, :email, presence: true
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
控制器
def new
if @cart.line_items.empty?
redirect_to store_url, notice: "Your cart is empty"
return
end
@order = Order.new
end
# GET /orders/1/edit
def edit
end
# POST /orders
# POST /orders.json
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 :show, status: :created, location: @order }
else
format.html { render :new }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
固定装置
one:
product_id: ruby
cart_id: one
two:
product_id: ruby
cart_id: one
这是我的 github 帐户 https://github.com/KerstinKee/depot
【问题讨论】:
-
Line items is invalid表明此订单引用的订单项存在验证错误。同样根据Rails API docs,validates :pay_type, inclusion: { in: PAYMENT_TYPES }}应该是验证付款方式的正确语法。 -
事实上,订单项有问题:如果我第一次点击“添加到购物车”按钮,它不会显示价格值,但如果我点击“第二次添加到购物车”按钮,它会显示价格值,如果我第三次和第四次点击“加入购物车”按钮也是如此。也许它与那个问题有关......我添加了一个截图。它不计算第一个订单项
标签: ruby-on-rails