无法使用carrierwave生成图像的缩略图

时间:2015-03-28 07:00:00

标签: ruby-on-rails image 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

用户/ 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:我可以在文件夹

中看到缩略图版本

如果有人可以帮助我,那就太棒了。

2 个答案:

答案 0 :(得分:0)

您调用其他版本的@imagefile的方式与调用其原始副本的方式相同,只需添加版本名称即可。你可以使用网址助手。这样:

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

答案 1 :(得分:0)

<%= image_tag @imagefile.image_url(:thumb) %>应为<%= image_tag @imagefile.avatar_url(:thumb) %>,因为已安装上传器的字段称为“头像”。此外,您不需要在网址上拨打.to_s