ruby-on-rails - 选择附件后显示图像预览,使用 Paperclip

标签 ruby-on-rails

我正在尝试使用回形针附加多个图像,并在提交表单之前显示附加图像的预览。有没有人已经这样做了,或者有人可以建议我如何做到这一点?我知道这将需要使用 jQuery 和 AJAX,但我不知道在提交表单之前在哪里查找附加图像。谢谢。

最佳答案

您不能使用 AJAX 进行文件上传。遗憾的是,浏览器不支持使用 XHR 传递它。我的建议是添加一个 iframe(所有允许异步图像上传的 gem/插件也这样做)并向其添加卸载。当文件输入发生变化时,将主窗体的目标更改为iframe的名称,提交并等待iframe的onload。

应该是这样的:

<iframe name="image_preview" id="image_preview" src="some_blank_page" onload="show_image_preview()"></iframe>

function show_image_preview() {
  // read content here. Note: this function is also called when the some_blank_page is loaded!
  var data = window.image_preview.document;
  if (data && data.getElementById("preview")) {
    // now either do something with the preview or just place the iframe so it
    // is already positioned correctly
  }
}

function file_field_changed() {
  var form = $('..');
  var original_action form.action;
  form.action = "special_preview_path";
  form.target = "image_preview";
  form.submit();

  form.action = original_action;
}

让您的 special_preview_path 在

中返回预览

您还可以在 onchange 事件中创建 iframe 并将其放置在每个文件输入字段的下方。

我希望这是有道理的!如果您需要更多相关信息,请告诉我。

关于ruby-on-rails - 选择附件后显示图像预览,使用 Paperclip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018243/

相关文章:

ruby-on-rails - 连接表关系的简单表单复选框

ruby-on-rails - 渲染部分 Assets

ruby-on-rails - 如何测试作为 helper_method 公开的 Rails Controller 方法?

ruby-on-rails - 在Rails3插件中替换ActionController::Routing::RouteSet::Mapper.send

ruby-on-rails - 如何指定所有表都应包含某些字段?

ruby-on-rails - 在 git 中存储 Rails Assets ?备择方案?

ruby-on-rails - Ruby on Rails 依赖注入(inject)

ruby-on-rails - 使用 Ajax 的 Rails 嵌套表单

ruby-on-rails - 在运行时,如何检查从哪里加载模块或类?

ruby-on-rails - 帮助解决 'Missing these required gems: error'