Rails如果 - Else语句image_url检查是否存在

时间:2014-10-04 18:31:19

标签: ruby-on-rails if-statement

<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

2 个答案:

答案 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 和 资产路径(如果存在)