【问题标题】:Creating nested form in Rails 3.1在 Rails 3.1 中创建嵌套表单
【发布时间】:2013-01-21 23:10:12
【问题描述】:

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

Rota_days#index 中的名称错误

显示 C:/Users/home/Desktop/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 %>

【问题讨论】:

    标签: ruby-on-rails-3 ruby-on-rails-3.1 nested-forms


    【解决方案1】:

    hospital_booking.new 是荒谬的:你没有名为 hospital_booking 的局部变量。如果您想要HospitalBooking 模型的新实例,那么您需要HospitalBooking.new。

    所以:

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

    更新(来自 cmets)

    在booking_dialog 部分表单中,您需要将关联的user 记录上的name 属性放在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 %>
    

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

    【讨论】:

    • 我遵循了这个,然后在#<0x45275d0>
    • &lt;&gt;
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多