我试图渲染部分,我已经设置如下。我还试图创建一个嵌套的形式,其中我已包括accepts_nested_attributes_for :user
在我的hospital_booking模型。我似乎得到以下错误:
Rota_days#index中的NameError
显示C:/用户/home/桌面/Portal/app/views/rota_days/index.html.erb其中第31行凸起:
未定义的局部变量或方法' hospital_booking'
,它指向index.html.erb的<%= render :partial => "booking_dialog", :locals => { :booking => hospital_booking.new } %>
行,如下所示。我以为这和我的多元化有关。通过将hospital_bookings.new
更改为hospital_booking.new
,但这不起作用
_booking_dialog.html.erb
<%= form_for booking do |f| %>
<%= f.fields_for :user do |f| %>
<br/>
<%= f.label :name %>
<br/>
<%= f.text_field :name %>
<%= f.hidden_field :hospital_id %>
<%= f.hidden_field :id unless booking.new_record? %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
hospital_booking.new
是无意义的:您没有名为hospital_booking
的局部变量。如果您想要一个HospitalBooking
模型的新实例,那么您需要HospitalBooking.new
。
:
<%= render :partial => "booking_dialog", :locals => { :booking => HospitalBooking.new } %>
更新(来自注释)
在booking_dialog
表单部分中,您需要将name
属性放在fields_for
块中的相关user
记录上,以将其与父(预订)的字段区分开来:
<%= form_for booking do |f| %>
<%= fields_for :user do |user_fields| %>
<%= user_fields.label :name %>
<%= user_fields.text_field :name %>
<% end %>
<%= f.hidden_field :hospital_id %>
<%= f.hidden_field :id unless booking.new_record? %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
注。你在这里为:id
设置了一个隐藏字段,这似乎很奇怪。你不需要这个