9

我意识到,当创建帖子以添加多个图像时,没有使用 jQuery-File-Upload 和 Carrierwave 或 Dragonfly 的解决方案来实现在一个页面上的能力。我有两个模型一个帖子有很多图像。我想在添加后立即上传图片,并可以选择在保存整个新帖子之前取消它。我的代码不起作用所以我没有在这里粘贴它,也许有人有例子,这个概念对于 jQuery-File-Upload 是否可行?如果不是,也许还有其他方法可以保存多张照片并保持引导视图?我发现了很好的例子,它们代表了与预期功能相似的功能,但使用 Upladify: FormFly或仅使用 Carrierwave 和 nested_form: carrierwave-nested_form。关于 jQuery-File-Upload git wiki是如何在 Rails 中仅使用一个模型的教程。

我想得到这样的东西: 在此处输入图像描述

4

2 回答 2

11

所有这一切的主要问题是“如何与不存在的对象建立关联?” . 好吧,你不能。你能做的是下一个最好的事情,智胜它。我将通过 3 个简单的步骤向您展示如何做到这一点。我故意不发布任何代码,因为该过程本身应该相当清晰,并且适用于各种方法(不仅限于 jQuery-File-Upload 和 Carrierwave 或 Dragonfly)。

步骤1

将关系的每个部分设置为正常的,独立的。使用脚手架(或其他)生成新帖子。在帖子表单的正下方,照常实施您的照片上传解决方案。我会像往常一样使用每个对象自己的控制器和部分,以防止这些东西不可磨灭地混合在一起。暂时不要担心关系关联代码。

第2步

将您的关系代码添加到模型中。不用担心界面没有正确关联它们。

第 3 步 (有趣的部分)

现在,把它们绑在一起。我们正在创建图像,但它们不属于任何帖子。我们还创建了没有任何图像的帖子。我们需要一些方法来完成这个关联。解决方案相当简单。您需要在帖子表单中创建一个隐藏文本字段,以包含要与帖子关联的图像的 ID。然后,您的图像创建响应,在将新图像添加到页面的同时将新图像的 ID 添加到文本字段。类似地,在后控制器中,只需循环隐藏字段中的 ID 并在保存之前关联目标对象。您可能希望向取消按钮添加类似的逻辑,例如在从页面中删除图像时从数组中删除 ID。

于 2012-09-18T23:15:18.047 回答
3

我发现了一个小例子,在带有carrierwave的rails中使用JqueryFileUpload上传多个图像。

我目前正在研究一个更好的解决方案来使用 JqueryFileUpload 实现多文件上传,但这个主题并不那么容易。

在这个例子中

当您在图片控制器新操作中设置新帖子对象的实例时,生成带有 body:string 的帖子脚手架,您可以在图片/新视图中为帖子实现表单。

<%= form_for(@post) do |f| %>
  <div class="field">
    <%= f.label :body %><br />
    <%= f.text_field :body %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
于 2012-09-10T13:21:09.897 回答