【发布时间】:2010-04-23 06:01:37
【问题描述】:
我在 Rails 视图中有一个嵌套表单,调用方式如下
<% f.fields_for :invoice_item_numbers do |item_no_form| %>
<%= render 'invoice_item_number', :f => item_no_form %>
<% end %>
部分(_invoice_item_number.html.erb)看起来像这样
<div class='invoice_item_numbers'>
<% if f.object.new_record? %>
<li><%= f.label :item_number %><%= f.text_field :item_number %>
<%= link_to_function "remove", "$(this).parent().remove()", :class => 'remove_link' %></li>
<% else %>
<li class="inline"><%= f.label :item_number %><%= f.text_field :item_number %>
</li><li class="inline"><%= f.label :description %><%= invoice_item_number.description %></li><li><%= f.label :amount %><%= f.text_field :amount %>
<%= f.check_box '_destroy', :class => 'remove_checkbox' %>
<%= f.label '_destroy', 'remove', :class => 'remove_label' %></li>
<% end %>
</div>
此操作失败并显示错误消息
undefined method `description' for nil:NilClass
为什么 invoice_item_number 在这个部分返回一个 nil 对象?它显然是以某种方式定义的,因为如果我将其更改为其他内容(例如item_number.description,那么错误消息将变为undefined local variable or methoditem_number' for #instead. The invoice_item_number object that is being displayed by this partial is being used perfectly well by the form helpers asandboth work perfectly well. I have tried a number of solutions such as using@invoice_item_number` 并在渲染方法中显式定义一个对象,但这些都不起作用。
大概有一个非常简单的答案。
【问题讨论】:
标签: ruby-on-rails forms partial-views nested-forms