私Product
のクラスには、データベースのテーブルにprice
適切な列があるフィールドと、ヘルパー フィールド ( として定義され、データベースのテーブルに適切な列がありません) があります。Products
new_shop
attr_accessor
Products
on の検証がprice
失敗した場合、入力フィールドはfield_with_errors
div でラップされますが、on の検証がnew_shop
失敗した場合、div でラップされませんfield_with_errors
。なんで ?
これらの入力フィールドに対して生成された 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]
。