0

我正在尝试渲染我设置如下的部分。我还试图创建一个嵌套表单,将其包含accepts_nested_attributes_for :user在我的 hospital_bookings 模型中。我似乎收到以下错误:

Rota_days 中的名称错误#index

显示 C:/Users/home/Desktop/Portal/app/views/rota_days/index.html.erb 其中第 31 行提出:

未定义的局部变量或方法“hospital_booking”

它指向<%= render :partial => "booking_dialog", :locals => { :booking => hospital_booking.new } %>我的 index.html.erb 的以下行,如下所示。我认为这与我的多元化有关。通过更改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 %>
4

1 回答 1

0

hospital_booking.new是荒谬的:您没有名为hospital_booking. 如果您想要HospitalBooking模型的新实例,那么您想要HospitalBooking.new.

所以:

<%=  render :partial => "booking_dialog", :locals => { :booking => HospitalBooking.new } %>

更新(来自评论)

booking_dialog部分表单中,您需要将name属性放在块user内的关联记录上fields_for,以将其与父字段(预订)区分开来:

<%= 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 %>

ps 在这里你有一个隐藏的字段似乎很奇怪:id。你不应该需要那个。

于 2013-01-05T22:54:06.733 回答