Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 如何手动构建正确的嵌套表单,并为其接受\u嵌套属性\u?_Ruby On Rails_Nested Forms_Nested Attributes - Fatal编程技术网

Ruby on rails 如何手动构建正确的嵌套表单,并为其接受\u嵌套属性\u?

Ruby on rails 如何手动构建正确的嵌套表单,并为其接受\u嵌套属性\u?,ruby-on-rails,nested-forms,nested-attributes,Ruby On Rails,Nested Forms,Nested Attributes,为了测试的目的,我正在尝试手动构建表单字段。我得到了以下型号: 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 :bedroom

为了测试的目的,我正在尝试手动构建表单字段。我得到了以下型号:

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
class:预订了卧室
结束
班级预订:预订了
接受\u嵌套的\u属性\u用于:预订的\u卧室
结束
类bookedboom
当我在控制台中尝试以下操作时,预订和关联的预订房间将被保存:

>> 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">]
>b=Booking.new({:Booking\u beddooms\u attributes=>{0=>{:beddoom\u id=>1}}})
=> #
>>拯救
=>正确
>>预定的卧室
=> [#]
所以我建立了一个这样的形式:

<% 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 %>

作为
但这行不通。预订已保存,但没有新预订的卧室记录。有人能告诉我怎么了吗


我知道我可以使用formtastic或一些字段,但我想用硬编码的形式解决这个问题,以便于演示。

我相信应该是这样的

<%= 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]}) %>