【问题标题】:Rails 4 display paperclip temp fileRails 4 显示回形针临时文件
【发布时间】:2015-03-09 16:42:47
【问题描述】:

我有一个表单和一个按钮,用于在提交之前显示页面的预览。我可以显示模型的所有属性,但看在我的份上,无法显示回形针附件。 我的 Event 模型的创建操作如下所示,如果单击预览按钮,我会渲染 preview.html.erb 视图并向用户显示我的事件属性:

def create
 @event = Event.new(event_params)
 if params[:preview]
   render 'preview'
   return
 else
   #process normally and save
 end
end

事件模型通过回形针有一个附加文件“图像”:

class Event < ActiveRecord::Base
 has_attached_file :image, :styles => {:gallery => "640x320#", :thumb => "100x100#"}
end

在 preview.html.erb 视图中,我试图显示 Paperclip 在保存之前创建的临时文件,但这不起作用。在视图中我正在使用这个:

<%= image_tag @event.image.queued_for_write[:gallery].path %>

但是,在呈现预览页面时,图像丢失。有人可以在保存模型之前帮我显示回形针图像吗?如何访问临时文件并将其显示在视图中?

谢谢!

【问题讨论】:

    标签: ruby-on-rails-4 paperclip


    【解决方案1】:

    使用 Javascript。您的表单应如下所示:

    <%= image_tag @user.avatar, id: 'avatar-preview' %>
    <%= f.file_field :avatar, onchange: "readUploadImage(this)" %>
    

    你的 JS:

    function readUploadImage(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $('#avatar-preview')
                    .attr('src', e.target.result)
                    .width(300)
                    .height(300);
            };
    
            reader.readAsDataURL(input.files[0]);
        }
    }
    

    【讨论】:

    • 不要忘记文件输入字段是嵌套字段,所以当我想添加多张图片时,我最终会得到几个具有相同id“#avatar_preview”的输入字段。
    • 在这种情况下,只需为您要上传的每张图片创建一个 image_tag 预览元素,并相应地执行更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多