<div class="img-container">
<%= if @user.image_url.present? %>
<%= image_tag @user.image_url(:main).to_s %>
<%= end %>
</div>
我正在使用rails 4和载波来上传照片中提到的照片。所以我的数据库中有一个名为“image”的列,上面的代码没有if语句。当我使用@ user.image_url(:main).to_s并且它有一个图像时,它正确显示容器中的图像。我想在用户没有提供标准照片时上传标准照片。它位于我的assets / images文件夹中。
如何获取if语句以检测列图像中是否存在照片?如果显示用户上传的照片,我必须使用image_url。不只是图像显示图像,而.to_s是一个安全网。有什么想法或答案吗?
谢谢!
由于接受了答案,我确实使用了推荐用于Rails 4的载波解决方案,推荐用于3.1及以上版本。这篇文章帮助我纠正了错误:Default URL not loading with Carrierwave in Rails
答案 0 :(得分:2)
使用CarrierWave指定default url应该可以解决问题。如果当前没有图像,则允许回退。
示例:
def default_url
ActionController::Base.helpers.asset_path "fallback/main/default.jpg"
end
答案 1 :(得分:0)
对于 Rails 5 ,对我有用的是
ActionController::Base.helpers.resolve_asset_path("logos/smthg.png")
返回nil
和
资产路径(如果存在)