我正在做一個酒店應用程序,其中包括Room
和RoomAttribute
模型。這兩個模型之間通過連接表具有many_to_many
關係。對於每個模型的屬性如下:Rails嵌套窗體與預定義字段作爲複選框
Room
-room_number
,room_type
(例如, 「豪華」 或 「套件」),和price
。RoomAttributes
-name
(例如「無線互聯網」,「有線電視」,「浴盆」)。
用戶將首先創建一組房間屬性,以便每次創建新房間時都可以選中這些屬性作爲複選框。例如,一些房間可能有無線上網,有些則沒有。 app/views/rooms/new.html.erb
的代碼是(我的使用原始HTML的道歉)。
<form action="<%= rooms_path %>" method="post">
<input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">
<label for="room_number">Room Number:</label>
<input type="text" name="room[room_number]" id="room_number"> <br>
<label for="room_type">Type:</label>
<input type="text" name="room[room_type]" id="room_type"> <br>
<label for="price">Price:</label>
<input type="text" name="room[price]" id="price"> <br>
<label for="room_attributes">Attributes:</label>
<ul>
<% @room_attributes.each do |room_attribute| %>
<li>
<input type="checkbox" name="room[room_attributes_ids][]" value="<%= room_attribute.id %>">
<%= room_attribute.name %>
</li>
<% end %>
</ul>
<input type="submit" value="Submit">
</form>
我用Rails 4,我想請教以下幾點:
- 使用表單助手設置形式或formtastic以便它已經輸出了所有的預定義的房間屬性和用戶可以通過複選框簡單地選擇要包含在房間中的屬性。
- 編寫
RoomController#create
方法,以便它將嵌套的RoomAttribute
模型設置爲房間屬性。我需要accepts_nested_attributes_for :room_attributes
在我的app/models/room.rb
? 如何在此場景中引入強參數。我讀過,我應該使用
params.require(:room).permit(:room_number, :room_type, :price, room_attributes_attributes: [:id])
但這不適用於我。
謝謝! :)