NestedAttributesとFormHelperの Rails api ドキュメントから作業し、stackoverflow を検索しています。
new.html.haml ビューに次のコードがあります。
=form_for listing, :html => {:id => :listing_form, :multipart => :true} do |f|
=f.fields_for :main_picture, (listing.main_picture || listing.build_main_picture) do |fmp|
=fmp.hidden_field :main, :value => 1
=fmp.file_field :image, :class => :picture_select
そして、私のコントローラーの次のコード:
def create
@listing = Listing.new(params[:listing])
@listing.save ? redirect_to(:root) : render('listings/new')
end
ここに私のlisting.rbがあります:
class Listing < ActiveRecord::Base
has_one :main_picture, :class_name => "Picture", :conditions => {:main => true}
attr_accessible :main_picture_attributes
accepts_nested_attributes_for :main_picture, :allow_destroy => true
end
そして私のpicture.rb:
class Picture < ActiveRecord::Base
belongs_to :listing
validates_presence_of :listing
attr_accessible :listing, :main
end
また、フォームを送信しようとすると、次のエラー メッセージが表示されます。
main_picture.listing: can't be blank
フレームワークが main_picture (オブジェクト Picture) の Listing_id フィールドを親 Listing オブジェクトの id 値に自動的に設定しない理由がわかりません。
私が間違っていることはありますか?