2014-07-12 120 views
1

在gemfile中,我安装了carrierwave以允许用户上传配置文件图像。我按照这个railscast中的指示 - http://railscasts.com/episodes/253-carrierwave-file-uploadsRuby on Rails image_tag不显示图像

gem 'carrierwave' 

但是图像不与image_tag一起显示。我可以通过在没有image_tag的情况下测试它来看到图像目录。我还在图像目录中导航以确保图像被存储。我可以看到它在导演 “/上传/用户/图片/ 110 /”

enter image description here

在视图中它显示的图像的URL “/uploads/user/image/110/thumb_IMG_0017.JPG”

<%= @user.image_url(:thumb).to_s %> 

添加图像标签显示任何

<%= image_tag @user.image_url(:thumb).to_s %> 

ImageUploader

class ImageUploader < CarrierWave::Uploader::Base 

    # Include RMagick or MiniMagick support: 
    #include CarrierWave::RMagick 
    include CarrierWave::MiniMagick 

    # Choose what kind of storage to use for this uploader: 
    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

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


end 

控制器

def show 
    @user = User.find(params[:id]) 
    ... 
end 

private 

    def user_params 
     params.require(:user).permit(:name, :email, :password, :password_confirmation, :image) 
    end 

模型

class User < ActiveRecord::Base 
    ... 

    mount_uploader :image, ImageUploader 

    ... 
end 

直接查询数据库例如用户110个显示以下

User.find(110).image_url(:thumb) 
User Load (2.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 110]] 
=> "/uploads/user/image/110/thumb_IMG_0017.JPG" 
+0

任何可以报告的错误/日志? –

+0

我没有得到任何错误。 – cloudviz

+0

图片刚回来404或什么的?页面本身发生了什么? –

回答

1

好吧,我检查了服务器日志

Checked the server log looks like a routing issue - Started GET "/uploads/user/image/111/thumb_IMG_1355.JPG" for 127.0.0.1 at 2014-07-12 11:00:29 +0100 

ActionController::RoutingError (No route matches [GET] "/uploads/user/image/111/thumb_IMG_1355.JPG"): 

看起来问题将通过进入配置/环境/ production.rb和development.rb并设置以下为true得到修复!

config.serve_static_assets = true 
+0

您是否处于生产模式?这会影响事情。你在heroku或什么? – stephenmurdoch

+0

生产是heroku。现在我在我的本地开发机器上。 – cloudviz

+0

只是在这里抬头......弃权警告:配置选项'config.serve_static_assets'已被重命名为'config。serve_static_files'来阐明它的作用(它只能提供'public'文件夹中的所有内容,而 与资产管道无关)。 Rails 5.0中将删除'serve_static_assets'别名。请相应地迁移您的配置文件。 – brntsllvn

3

您需要在设置carrierwave后重新启动服务器。这将解决一切。

+1

我重新启动它,但没有解决问题。我需要路线中的公共文件夹吗? – cloudviz