我在设置Carrierwave时设置了默认头像。它已不再有效。我在视图中尝试了这个工作,但它也没有工作。即使在用户上传头像图像后,默认也始终显示。
在我看来: <%if @ avatar.nil? %GT; <%= link_to image_tag(('/ assets / images / default.png')。to_s),user%> <%else%> <%= link_to image_tag(user.avatar.to_s,collection:user),user%> <%end%>
user.rb: validates_presence_of:avatar,allow_blank:true
我也试过这个作为解决方法,但没有用:
def create
@user = User.new(user_params)
#@avatar = "/assets/images/'default.png'"
if @user.save
sign_in @user
flash[:success] = "Welcome!"
redirect_to :back
else
flash[:error] = "Please fill in required information."
render 'new'
end
end
session_helper.rb
def avatar_changed?
@avatar = Avatar.find(params[:id])
if user && user.read_attribute(:avatar).present?
user.read_attribute(:avatar)
else
user.avatar.recreate_versions!
avatar.save!
end
end
有关如何设置默认图片但是如果/当用户上传个人图片时更改它的任何建议吗?
由于
答案 0 :(得分:0)
Here is a thread。使用s3时default_url
只是不起作用。他们只是没有让它发挥作用。
这是一个可能的解决方案:
将后备图像文件夹移动到app / assets / images
改变这样的default_url方法,其中ENV ['FOG_DIRECTORY']是你的s3桶的名称
def default_url
image = [version_name, "default.jpg"].compact.join('_')
"http://s3.amazonaws.com/#{ENV['FOG_DIRECTORY']}/assets/fallback/#{image}"
end
我实际上没有AccessDenied Error的解决方案,但您可以将此存储桶公开
答案 1 :(得分:0)
如果其他人遇到类似问题。在我看来,我正准备使用以下内容:
<% if current_user.avatar.present? %>
<%= link_to image_tag(current_user.avatar_url.to_s), current_user %>
<% else %>
<%= link_to image_tag(('/assets/images/default.png').to_s), current_user %>
<% end %>
根据视图我更改了user.avatar.present ...和if @ avatar.present之间的对象?我以前一直试图普遍应用实例差异(@avatar),但这种方法不起作用。