現在、私は2つのモデルを持っています。
class Booking
include Mongoid::Document
include Mongoid::Timestamps
field :capacity, type: Integer
field :date, type:Date
embeds_many :appointments
attr_accessible :capacity, :date, :appointments_attributes
accepts_nested_attributes_for :appointments
end
class Appointment
include Mongoid::Document
field :name, type: String
field :mobile, type: String
embedded_in :booking
end
予約に埋め込まれた予約フォームを作成するにはどうすればよいですか? 理想的には、予約日を指定して予約を追加できるようにしたいです。
コンソールで実行できますが、フォームを作成する方法がわかりません。
私はこれを試しましたが、うまくいきません
<%= form_for(@booking) do |f| %>
<div class="field">
<%= f.label :capacity %><br />
<%= f.text_field :capacity %>
</div>
<div class="field">
<%= f.label :date %><br />
<%= f.text_field :date %>
</div>
<h1> form for appointment </h1>
<%= f.fields_for :appointments do |builder| %>
<div class="field">
<%= builder.label :name %><br />
<%= builder.text_field :name %>
</div>
<div class="field">
<%= builder.label :mobile %><br />
<%= builder.text_field :mobile %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
予約コントローラーで
def create
@booking = Booking.new(params[:booking])
@appointment = @booking.appointments.build(params[:appointments])
respond_to do |format|
if @booking.save
format.html { redirect_to @booking, notice: 'Booking was successfully created.' }
format.json { render json: @booking, status: :created, location: @booking }
else
format.html { render action: "new" }
format.json { render json: @booking.errors, status: :unprocessable_entity }
end
end
end
フォームが想定していることを実行するコンソール コマンド:
book = Booking.create(capacity: 10, date: Date.today)
book.appointments.create(name: "Josh", mobile: "19923")
book.appointments.create(name: "Bosh", mobile: "123344")
book.appointments
=> [#<Appointment _id: 51a083c332213f2cc9000002, _type: nil, name: "Josh", mobile: "19923">, #<Appointment _id: 51a0840632213f2cc9000003, _type: nil, name: "Bosh", mobile: "123344">]