我在edit.html.erb视图中,渲染_form.html.erb partial。
下面的代码本身会输出整数' 5'
<%= ff.object.product_id %>
但是当我将它包含在find函数中时,它会输出一个错误: 无法找到没有ID的产品
<%= @purchase_order.new_record? ? '' : @products.find(ff.object.product_id).name %>
如果我对整数进行硬编码,它将起作用
<%= @purchase_order.new_record? ? '' : @products.find(5).name %>
如何让ff.object.product_id在find()中工作?
<%= form.nested_fields_for :purchase_order_items, wrapper_tag: :tr do |ff| %>
<td class="col-md-1">
<div class="input-product_code-div">
<%= @purchase_order.new_record? ? '' : @products.find(ff.object.product_id).code %>
</div>
<%= ff.hidden_field :product_id, class: "input-product_code" %>
</td>
<td>
<div class="input-product_name-div">
<%= @purchase_order.new_record? ? '' : '' %>
</div>
</td>
<td class="col-md-1">
<%= ff.number_field :quantity, :step => "0.01", class: "form-control input-quantity" %>
</td>
<td class="col-md-1">
<%= ff.number_field :unit_price, :step => "0.01",class: "form-control input-unit_price" %>
</td>
<td>
<div class="input-currency-div"></div>
<%= ff.hidden_field :currency, class: "input-currency" %>
</td>
<td align="center">
<%= ff.remove_nested_fields_link "", class: 'glyphicon glyphicon-trash input-remove-row', role: 'button' %>
</td>
<% end %>
答案 0 :(得分:1)
在下面的代码行中,
<%= @purchase_order.new_record? ? '' : @products.find(ff.object.product_id).name %>
您正在检查@purchase_order
是否是新记录,这是可以的。
但是你没有检查ff.object
是否是新记录?
ff.object可能是新记录,并且没有填充product_id
列,这会导致错误。
我认为你应该把它写成
<%= ff.object.new_record? ? '' : @products.find(ff.object.product_id).name %>
答案 1 :(得分:0)
是的,我同意@Amulya可能是ff.object可能是新的记录。
但是,不是对所有产品使用查询查询,而是可以用
替换它<%= ff.object.product.try(:name) %>