【发布时间】:2014-09-02 21:11:07
【问题描述】:
在 gemfile 中,我安装了carrierwave 以允许用户上传个人资料图片。我有点遵循这个 railscast 中的说明 - http://railscasts.com/episodes/253-carrierwave-file-uploads
gem 'carrierwave'
但是图像未使用 image_tag 显示。我可以通过在没有 image_tag 的情况下对其进行测试来查看图像目录。我还在图像目录中导航以确保存储图像。在director里可以看到“/uploads/user/image/110/”
在视图中,它显示图片网址 "/uploads/user/image/110/thumb_IMG_0017.JPG"
<%= @user.image_url(:thumb).to_s %>
添加图片标签不显示任何内容
<%= image_tag @user.image_url(:thumb).to_s %>
图像上传器
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"
【问题讨论】:
-
您可以报告任何错误/日志吗?
-
图像刚刚返回 404 还是什么?页面本身会发生什么?
-
好的,我试过这样做 - localhost:3000/uploads/user/image/110/thumb_IMG_0017.JPG。我得到没有路线匹配 [GET] "/uploads/user/image/110/thumb_IMG_0017.JPG"
-
您的
/public目录中有uploads文件夹吗? -
上传文件夹在公用文件夹目录下。我是否打算这样做localhost:3000/public/uploads/user/image/110/… 仍然得到相同的路由匹配得到错误
标签: ruby-on-rails file-upload carrierwave