这个错误是因为@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存在,就会渲染表单字段,否则不会渲染,避免了报错

rails项目中使用 cocoon gem去写嵌套的form def edit product = Productfindparamsid product_skus = productproduct_skusall productproduct_skusbuild end = ffields_for product_skus do product_sku 报错undefined

原文地址: https://www.cveoy.top/t/topic/icqb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录