无法使用载波生成图像的缩略图

can't generate a thumbnail of an image using carrierwave

我的计划是只为图像创建一个模型,然后使用该模型创建个人资料图片、图库等。

所以,我已经为图像创建了一个单独的模型,并且我能够存储图像以显示这些图像。但是,它们太大了,所以我想创建一个缩略图版本。 我的配置是

class Image < ActiveRecord::Base
 mount_uploader :avatar, AvatarUploader
end

控制器:

class ImagesController < ApplicationController
   def new
     @image_upload=Image.new
   end

   def create
     @image_upload=Image.create(uploading_image)
     if @image_upload.save
      redirect_to '/users'
     end
  end

  def uploading_image
     params.require(:image).permit(:avatar)
  end
 end

上传者:

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file

   def store_dir
      "uploads/#{model.class.to_s.underscore}...(default store only)"        
   end


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

用户控制器:

def index
   @user_profile=Profile.find(1)
   @imagefile=Image.first
end

users/index.html.erb:

 <%= image_tag @imagefile.avatar.to_s %> #This gives me the whole image.

<%= image_tag @imagefile.image_url(:thumb).to_s %> #says undefined method `image_url' for #<Image:0x007f6cd0538010>

ps: 我可以在文件夹中看到缩略图版本

如果有人能帮助我,那就太好了。

您可以像调用原始副本一样调用@imagefile 的其他版本,只需添加版本名称即可。你可以使用 url 助手。所以:

<%= image_tag @imagefile.avatar.url %>
<%= image_tag @imagefile.avatar.thumb.url %>

<%= image_tag @imagefile.image_url(:thumb) %> 应该是 <%= image_tag @imagefile.avatar_url(:thumb) %> 因为安装了上传器的字段叫做 'avatar'。此外,您不需要在 url.

上调用 .to_s