Ruby Rails image_tag 不显示图像 Carrierwave
Ruby on Rails image_tag not displaying the image Carrierwave
我正在尝试获取个人资料图片以显示给用户,但没有成功。我在 gem 文件中安装了 carrierwave
gem 以及 mini_magick
。
图片上传者
class AvatarUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_fit => [80, 80]
end
def extension_white_list
%w(jpg jpeg gif png)
end
user.rb
class User < ActiveRecord::Base
...
mount_uploader :avatar, AvatarUploader
end
show.html.erb
...
<%= image_tag @user.avatar.url(:thumb) if @user.avatar?%>
<%= link_to "Edit", edit_user_path(@user)%>
控制器(正在显示警报,而不是图像)
def update
if @user.update(user_params)
redirect_to @user
else
flash.now[:alert] = "Something went wrong. Please try again."
render :edit
end
end
private
def check_authorization
unless current_user.id == params[:id].to_i
redirect_to root_url
end
end
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:username, :avatar)
end
end
哇,我们这里的社区真棒!很有帮助!实际上,我必须去 reddit 才能得到该死的答案。我敢肯定,将来会有人遇到我遇到的同样问题,不幸的是,他们会先到这个网站寻找答案。对我有用的是安装 imagemagick
如果您使用的是 Mac,并且安装了自制程序,就像 brew install imagemagick
一样简单。重新启动服务器,它应该可以工作。
我正在尝试获取个人资料图片以显示给用户,但没有成功。我在 gem 文件中安装了 carrierwave
gem 以及 mini_magick
。
图片上传者
class AvatarUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_fit => [80, 80]
end
def extension_white_list
%w(jpg jpeg gif png)
end
user.rb
class User < ActiveRecord::Base
...
mount_uploader :avatar, AvatarUploader
end
show.html.erb
...
<%= image_tag @user.avatar.url(:thumb) if @user.avatar?%>
<%= link_to "Edit", edit_user_path(@user)%>
控制器(正在显示警报,而不是图像)
def update
if @user.update(user_params)
redirect_to @user
else
flash.now[:alert] = "Something went wrong. Please try again."
render :edit
end
end
private
def check_authorization
unless current_user.id == params[:id].to_i
redirect_to root_url
end
end
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:username, :avatar)
end
end
哇,我们这里的社区真棒!很有帮助!实际上,我必须去 reddit 才能得到该死的答案。我敢肯定,将来会有人遇到我遇到的同样问题,不幸的是,他们会先到这个网站寻找答案。对我有用的是安装 imagemagick
如果您使用的是 Mac,并且安装了自制程序,就像 brew install imagemagick
一样简单。重新启动服务器,它应该可以工作。