各ループのnested_form_fields内の既存の親属性にアクセスしようとしています。関連する「products」属性にはアクセスできますが、「sales_order_items」属性にはアクセスできません。生成されたエラーは次のとおりです。未定義メソッド `service_name 'for nil:NilClassNested_fields_for内でフォームの.object.attributeにアクセスできません
<%= form.nested_fields_for :delivery_items, wrapper_tag: :tr do |ff| %>
<td class="col-md-1">
<div class="input-product_name-div">
<% if ff.object.product.present? %>
<%= ff.object.product.name %>
<%else%>
<%= ff.object.sales_order_item.service_name %> #this line fails
<%end%>
</div>
</td>
<% end %>
私のモデルで見ることができるように、それらはどちらも同じように関連付けられています。私はアイテムがサービス名を持っていると確信して
:
class Product < ApplicationRecord
has_many :sales_order_items
has_many :delivery_items
end
class SalesOrderItem < ApplicationRecord
belongs_to :sales_order, optional: true
belongs_to :product, optional: true
has_many :delivery_items
end
は、ここに私のDeliveryItemモデルです。私はレールコンソールを使用している場合、実際には、私は問題はフォームのヘッダーた2.3.1
<%= ff.object.sales_order_item&.service_name%>
このフォームビューをレンダリングしているコントローラコードを表示します - 主にオブジェクトの取得方法に興味があります – kiddorails
@kiddorails - これは編集コントローラの唯一の行です@delivery = Delivery.find(params [:id]) '。 delivery_itemsは配信に属しているため、このedit.html.erbファイルでアクセスできます。 – Bassman