【问题标题】:How to display a tempfile image in views with Rails Active Storage如何使用 Rails Active Storage 在视图中显示临时文件图像
【发布时间】:2020-07-24 06:11:45
【问题描述】:

在我的 rails 6 应用程序中,我使用主动存储将文件上传到 cloudinary。我有一个功能,我想在提交之前预览表单。这还要求我在提交之前预览仍然是临时文件的上传图像。 我正在 create.html.erb 中设置预览。这就是我尝试在 create.html.erb 中预览图像临时文件的方式,但它不起作用。

    <%= image_tag params[:company][:logo].path %>

这就是我的公司模式的样子

class Company < ApplicationRecord
  belongs_to :user
  has_one_attached :logo
end

如何在我的视图中显示临时图像?

【问题讨论】:

标签: ruby-on-rails ruby cloudinary rails-activestorage ruby-on-rails-6


【解决方案1】:

我想如果你还没有提交表格,它还没有上传。

在这种情况下,您可以显示仍在浏览器中的图像。

应该是这样的:

function readURL(input) {
  if (input.files && input.files[0]) {
    var reader = new FileReader();
    
    reader.onload = function(e) {
      $('#blah').attr('src', e.target.result);
    }
    
    reader.readAsDataURL(input.files[0]); // convert to base64 string
  }
}

$("#imgInp").change(function() {
  readURL(this);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form runat="server">
  <input type='file' id="imgInp" />
  <img id="blah" src="#" alt="your image" />
</form>

查看此问题以了解更多详情:Preview an image before it is uploaded

【讨论】:

  • 谢谢,但我正在寻找非 JavaScript 解决方案。我更喜欢只使用 rails 或 ruby​​
  • 表格提交了吗?如果没有,没有 JavaScript 是不可能做到的。
  • 此解决方案仅在用户上传图片时在 new.html.erb 中有效,但我实际上想在 create.html.erb 中预览图片。我在这里说明情况stackoverflow.com/questions/61443593/…
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 2020-09-03
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多