使用载波和Dropzone上传图片时,渲染缩略图版本

时间:2018-12-13 21:28:41

标签: ruby-on-rails carrierwave

我正在使用载波和dropzone将一些图片上传到相册。

一切正常,不同之处在于,当我向相册添加新图片时,它将重新渲染文件而没有缩略图大小。

我的控制器是这样的:

class MediaContentsController < ApplicationController

  def index
    @media_contents = Media.all
  end

  def create
    @media = Media.new(file_name: params[:file])
    @album = Album.find(params[:album])
    @media.album = @album
    if @media.save!
      render json: @media
    else
      render json: { error: 'Failed to process' }, status: 422
    end
  end
end


class MediaUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

   version :thumb do
     process :resize_to_fill => [50, 50]
   end
end

在我看来:

<% if media_contents.empty? %>
  <h5 id="no-media">No Media Found</h5>
<% else %>
  <% media_contents.each do |media| %>
    <div class="col-4">
      <div class="thumbnail">
        <%= image_tag media.file_name_url(:thumb) %>
        <div class="caption">
          <p>
            <%= check_box_tag 'media_contents[]', media.id %>
          </p>
        </div>
      </div>
    </div>
  <% end %>
<% end %>

因此,在我看来,图像以全尺寸显示(而不是缩略图)。我对此行表示怀疑:

 render json: @media

我已经尝试做

render json: @media.file_name_url(:thumb)

但是,如果我这样做,它什么也不会显示。

有帮助吗?

1 个答案:

答案 0 :(得分:0)

是的,我已经阅读了以下教程

Image uploading using carrierwave

那确实对我有用,只是尝试更改您的视图之类的东西

<% if media_contents.empty? %>
  <h5 id="no-media">No Media Found</h5>
<% else %>
  <% media_contents.each do |media| %>
    <div class="col-4">
      <div class="thumbnail">
        <%= image_tag media.thumb.url %>
        <div class="caption">
          <p>
            <%= check_box_tag 'media_contents[]', media.id %>
          </p>
        </div>
      </div>
    </div>
  <% end %>
<% end %>