我有一个带有模型</head>
的rails应用程序,它具有嵌套模型<ion-content></ion-content>
<ion-footer>
<ion-toolbar>
<ion-title>Footer</ion-title>
</ion-toolbar>
</ion-footer>
。我使用Carrierwave上传PDF,Word文档等作为文档。
在我的products
我的表格字段呈现部分;
productdocuments
部分已上传的文档:
edit.html.erb
我看到的问题是,当我上传文件时,rails会在<%= f.file_field :resource, name: "product[productdocuments_attributes][][resource]", multiple: true, :placeholder => "Resource", id: "product_productdocuments_attributes" %>
上触发update.js.erb的渲染,而不是来自<%= render @product.productdocuments %>
的create.js.erb这使得使用新Product
附加部分变得更加困难。
知道如何从Productdocuments触发create.js.erb吗?
答案 0 :(得分:0)
我想在edit.html.erb
中有类似的内容:
<%= form_for @product, remote: true do |f| %>
<%= f.file_field :resource, name: "product[productdocuments_attributes][][resource]", multiple: true, :placeholder => "Resource", id: "product_productdocuments_attributes" %>
<%= f.submit %>
<% end %>
在submit
上向ProductsController
发送请求,而不是按照您的预期向ProductDocumentsController
发送请求。由于@product
是持久记录,因此请求转到update
方法。
在这种情况下,产品文档的其他表单将解决问题:
<%= form_for @product.productdocuments.build, remote: true do |f| %>
<%= f.file_field :resource, , multiple: true, :placeholder => "Resource" %>
<%= f.submit %>
<% end %>
@product.productdocuments.build
构建一个新对象,因此请求将转到create
方法。
希望它有所帮助。