rails项目中使用 cocoon gem去写嵌套的form def edit product = Productfindparamsid product_skus = productproduct_skusall productproduct_skusbuild end = ffields_for product_skus do product_sku 报错undefined
这个错误是因为@product_skus是一个ActiveRecord::AssociationRelation对象,而不是一个ProductSku对象。fields_for方法需要一个对象作为参数,所以你需要修改你的代码。
首先,你可以使用exists?方法来判断是否存在关联记录,然后再进行相应的处理。修改edit方法如下:
def edit
@product = Product.find(params[:id])
@product_skus = @product.product_skus.exists? ? @product.product_skus : @product.product_skus.build
end
接下来,在视图中使用if语句来判断@product_skus是否存在,如果存在则渲染fields_for表单字段,否则不渲染。修改视图代码如下:
<% if @product_skus.present? %>
<%= f.fields_for @product_skus do |product_sku| %>
...
<% end %>
<% end %>
这样,如果@product_skus存在,就会渲染表单字段,否则不会渲染,避免了报错
原文地址: https://www.cveoy.top/t/topic/icqb 著作权归作者所有。请勿转载和采集!