我有一个表单来创建BookingAccommodation模型的示例。此模型属于一个Accommodation,并具有一个internal_name。
<%= form_with model: @booking_accommodation, url: property_settings_accommodations_type_booking_accommodations_path(@accommodation) do |f| %>
<div class="flex flex-col">
<%= f.label :internal_name %>
<%= f.text_field :internal_name, class: "border" %>
</div>
<div>
<%= f.submit %>
</div>
<% end %>
class Property::Settings::Accommodations::BookingAccommodationsController < PropertyController
def create
@accommodation = Accommodation.find(params[:type_id])
@booking_accommodation = @accommodation.booking_accommodations.new(booking_accommodation_params)
if @booking_accommodation.save
redirect_to edit_property_settings_accommodations_type_path(@accommodation)
else
# Handle error
end
end
private
def booking_accommodation_params
params.require(:booking_accommodation).permit(:internal_name)
end
end
text_field生成的html如下:
<input class="border" type="text" name="internal_name" id="internal_name">
但是这需要有一个像这样的booking_accommodation子哈希:
<input class="border" type="text" name="booking_accommodation[internal_name]" id="internal_name">
如果我没有子散列,参数就不会嵌套,表单就会产生错误。这是什么原因造成的?
1条答案
按热度按时间voase2hg1#
您显示
create
方法的事实强烈表明您不了解最初呈现表单的是new
方法,因此您需要在何处设置ivar。