在Rails 3.1中创建嵌套表单



我试图渲染部分,我已经设置如下。我还试图创建一个嵌套的形式,其中我已包括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设置了一个隐藏字段,这似乎很奇怪。你不需要这个

相关内容

  • 没有找到相关文章