我意识到在创建帖子以添加多个图像时,没有使用jQuery-File-Upload和Carrierwave或Dragonfly在一个页面上创建能力的解决方案。我有两个模型一个帖子有很多图像。我想在添加后立即上传图片,并在保存全新帖子之前选择取消它。我的代码没有工作,所以我没有在这里粘贴,也许有人有例子,这个概念是否完全可行jQuery-File-Upload?如果没有其他方法可以保存多张照片并保持引导视图?我找到了很好的例子,它们代表了与预期的功能相似但是使用Upladify:FormFly或仅使用Carrierwave和nested_form:carrierwave-nested_form。关于jQuery-File-Upload git wiki是教程如何仅在Rails中使用一个模型。
我想得到这样的东西:
答案 0 :(得分:11)
所有这一切的主要问题是问题“如何创建与不存在的对象的关联?”。好吧,你做不到。你能做的就是下一个最好的事情,超越它。我将通过3个简单的步骤向您展示如何做到这一点。我故意不发布任何代码,因为流程本身应该相当清楚,并且适用于各种方法(不仅限于jQuery-File-Upload和Carrierwave或Dragonfly)。
第1步
将关系的每个部分设置为正常,独立。使用脚手架(或其他)生成新帖子。在帖子表格的正下方,正常实施照片上传解决方案。我会像往常一样使用每个对象自己的控制器和部分,以防止这些东西不可磨灭地混合在一起。暂时不要担心关系关联代码。
第2步
将您的关系代码添加到模型中。不要担心接口没有正确关联它们。
第3步 (有趣的部分)
现在,将它们捆绑在一起。我们正在创建图像,但它们不属于任何帖子。我们还创建了没有任何图像的帖子。我们需要一些方法来完成这种关联。解决方案非常简单。您需要在帖子表单中创建隐藏文本字段,以包含要与帖子关联的图像的ID。然后,您的图像创建响应,在将新图像添加到页面的同时将新图像的ID添加到文本字段。类似地,在后控制器中,只需从隐藏字段循环ID并在保存之前关联目标对象。您可能希望向取消按钮添加类似的逻辑,例如从页面中删除图像时从阵列中删除ID。您可能还希望添加计划任务以清除与帖子无关的特定年龄的图像,以从已放弃的表单中删除任何混乱。
答案 1 :(得分:3)
我发现了一个小例子,用带有载波的rails在JqueryFileUpload上传多个图像。
我目前正致力于使用JqueryFileUpload更好地解决多重文件上传问题,但这个主题并不容易。
使用body:string生成帖子支架 当您在pictures_controller新操作中设置新帖子对象的实例时 您可以在图片/新视图中为帖子实现表单。
<%= form_for(@post) do |f| %>
<div class="field">
<%= f.label :body %><br />
<%= f.text_field :body %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>