3

我的Product班级有price字段,它在数据库的表中具有适当的列Products,以及new_shop辅助字段(定义为attr_accessor,并且在数据库的表中没有适当的列Products)。

当验证price失败时,输入字段被field_with_errorsdiv包裹,但当验证new_shop失败时,它不被field_with_errorsdiv包裹。为什么 ?

以下是为这些输入字段生成的 HTML:

<input type="text" name="product[price]" id="product_price">
<input type="text" value="" name="product[new_shop]" id="product_new_shop">

更多信息:

class Product < ActiveRecord::Base
  attr_accessor :new_shop 
  accepts_nested_attributes_for :shop
  validates_presence_of :price
  ...
end

class Shop < ActiveRecord::Base
  validates_presence_of :name
  ...
end

提交表单时,该new_shop值将传递给产品的shop_attributes[:name].

4

1 回答 1

3

所以实际上验证失败的是 :name 属性?这就是为什么 new_shop 没有得到 fieldWithErrors div 的原因:这会查看 @product.errors 以逐个字段地确定它是否有错误。IE

#comes to do the :new_shop field
#looks to see if @product.errors.on(:new_shop) is not blank
#if it isn't blank, wraps the error div round it. 
于 2010-12-21T10:10:55.330 回答