私はHotel
とRoom
という2つのモデルを持っています。私は新しいホテルと部屋を追加するためのフォームを作成したいと思います。これはホテルの名前と部屋の数を示しています。 "入れ子になったフォーム"を使うべきですが、それを正しく実装するのは難しいです。ここでフォームフィールドで別のモデルの数量を作成するフォーム
私のコードです:
HotelsController
class HotelsController < ApplicationController
def index
@hotels = Hotel.all
end
def new
@hotel = Hotel.new
end
def create
@hotel = Hotel.new(hotel_params)
if @hotel.save
redirect_to @hotel
else
render 'new'
end
end
def show
@hotel = Hotel.find(params[:id])
end
def destroy
@hotel = Hotel.find(params[:id])
@hotel.destroy
redirect_to hotels_url, notice: 'Hotel was successfully destroyed.'
end
private
def hotel_params
params.require(:hotel).permit(:name, :rooms_count)
end
end
ホテルモデル
class Hotel < ApplicationRecord
has_many :rooms, dependent: :destroy
accepts_nested_attributes_for :rooms
end
ルームモデル
class Room < ApplicationRecord
belongs_to :hotel, optional: true # avoiding rails 5.2 belongs_to error
end
フォーム
<%= form_with scope: :hotel, url: hotels_path, local: true do |form| %>
<p>
<%= form.label :name %><br>
<%= form.text_field :name %>
</p>
<p>
<%= form.label :rooms_count %><br>
<%= form.number_field :rooms_count %>
</p>
<p>
<% form.fields_for :rooms do |f|%>
<p>
**THE CODE**
</p>
<% end %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>