gpt4 book ai didi

ruby-on-rails - 以嵌套形式部分访问变量时出现问题

转载 作者:行者123 更新时间:2023-12-03 17:33:56 25 4
gpt4 key购买 nike

我在这样调用的 rails View 中有一个嵌套表单

<% 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 #相反。此部分显示的 invoice_item_number 对象被表单助手很好地用作 <%= f.text_field :item_number %>and<% f.text_field : amount %>两者都工作得很好。我尝试了很多解决方案,例如使用@invoice_item_number` 和在 render 方法中显式定义一个对象,但这些都没有奏效。

大概有一个非常简单的答案。

最佳答案

只需在 http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes 重新阅读 Ryan 关于嵌套表单的文章并找到了答案。它已经在我的代码中了,但我不明白发生了什么。我可以使用 f.object 访问 invoice_item_number 对象,因此替换 <%= invoice_item_number.description %><%= f.object.description %>解决了我的问题。

关于ruby-on-rails - 以嵌套形式部分访问变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com