[英]How to manually build a correct nested form with accepts_nested_attributes_for?
我正在嘗試出於測試目的手動構建表單字段。 我得到以下模型:
class Bedroom < ActiveRecord::Base
has_many :booked_bedrooms
has_many :bookings, :through => :booked_bedrooms
end
class Booking < ActiveRecord::Base
has_many :booked_bedrooms
has_many :bedrooms, :through => :booked_bedrooms
accepts_nested_attributes_for :booked_bedrooms
end
class BookedBedroom < ActiveRecord::Base
belongs_to :booking
belongs_to :bedroom
# fields: bedroom_id, :booking_id
end
當我在控制台中嘗試以下操作時,預訂和關聯的booked_bedroom將被保存:
>> b = Booking.new({ :booked_bedrooms_attributes => { 0 => { :bedroom_id => 1 } } })
=> #<Booking id: nil, start_date: nil, end_date: nil, created_at: nil, updated_at: nil>
>> b.save
=> true
>> b.booked_bedrooms
=> [#<BookedBedroom id: 1, booking_id: 1, bedroom_id: 1, created_at: "2010-06-22 18:55:57", updated_at: "2010-06-22 18:55:57">]
所以我建立了這樣一個表格:
<% form_for @booking do |form| %>
<% for bedroom in @available_bedrooms %>
<%= check_box_tag "booked_bedrooms_attributes[#{bedroom.id}][bedroom_id]", bedroom.id %> <%= bedroom.name %>
as
<%= select_tag "booked_bedrooms_attributes[#{bedroom.id}][booking_type_id]", options_for_select(bedroom.booking_types.map {|p| [p.name, p.id]}) %>
<% end %>
<% end %>
但這是行不通的。 預訂已保存,但沒有新的BookedBedroom記錄。 有人可以告訴我怎么了嗎?
我知道我可以使用formtastic或某些fields_for,但出於演示目的,我想以硬編碼形式解決該問題。
我相信應該是這樣
<%= check_box_tag "booking[booked_bedrooms_attributes][][bedroom_id]",
bedroom.id %>
<%= select_tag "booking[booked_bedrooms_attributes][][booking_type_id]",
options_for_select(bedroom.booking_types.map {|p| [p.name, p.id]}) %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.