Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用rails 4的敏捷Web开发-签出-行项目无效_Ruby On Rails - Fatal编程技术网

Ruby on rails 使用rails 4的敏捷Web开发-签出-行项目无效

Ruby on rails 使用rails 4的敏捷Web开发-签出-行项目无效,ruby-on-rails,Ruby On Rails,我正在学习RubyonRails,学习《敏捷开发》一书。我做的最后一件事是创建了Checkout部分:我向控制器添加了操作,并为模型的实例变量添加了方法。一切都按预期进行。。。在某种程度上 当我插入name、address、emailaddress和pay type等的值时,我会收到一个错误通知,说Item无效 某些验证测试可能写错了。有人知道会出什么问题吗 class Order < ActiveRecord::Base has_many :line_items, dependent:

我正在学习RubyonRails,学习《敏捷开发》一书。我做的最后一件事是创建了Checkout部分:我向控制器添加了操作,并为模型的实例变量添加了方法。一切都按预期进行。。。在某种程度上

当我插入name、address、emailaddress和pay type等的值时,我会收到一个错误通知,说Item无效

某些验证测试可能写错了。有人知道会出什么问题吗

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
固定装置

 one:
  product_id: ruby
  cart_id: one

 two:
  product_id: ruby
 cart_id: one
这是我的github帐户
您有两个验证。如果您确实传递了姓名、地址和电子邮件,则第二次验证将失败

validates :pay_type, inclusion: PAYMENT_TYPES
你选择什么类型的薪水

您可以通过以下方式获取验证错误:

object.errors.messages

祝你好运

我将查看将产品添加到购物车的代码,验证看起来正确,模型定义业务规则,对象之间的关系控制器定义的每个对象在数据库中都有一个表行


如果代码的一部分在保存另一个对象表行条目之前删除了一个对象表行,这将破坏数据库中的关系,这也会显示为一个验证错误。在我的情况下,在订单保存命令后,我正在其自身的救援块中执行充电。此命令的第一部分删除了购物车对象,当订单保存时,条形收费代码行在订单保存代码行之后进行口述,这导致错误无效行项目,一旦收费代码放在@order.save之前,并且在单个begin rescue块内,订单保存时没有错误[link]

Hi Stanislav,谢谢你的评论:不幸的是,我不明白。我选择支票作为付款方式。我想我必须重写验证…行项目无效表明此订单引用的行项目存在验证错误。同样根据,validates:pay_type,inclusion:{in:PAYMENT_TYPES}应该是验证付款方法的正确语法。事实上,行项目有问题:如果我第一次点击“添加到购物车”按钮,它不会显示价格的值,但是如果我第二次单击AddtoCart按钮,它会显示一个价格值,如果我第三次和第四次单击AtttoCart按钮,它也会显示一个价格值。也许这和那个问题有关。。。我添加了一个截图。它不计算第一行项目
object.errors.messages