Ruby on Rails / HAML image_path 在 else 条件下不工作?

Ruby on Rails / HAML image_path not working in else condition?

我目前正在使用 haml 进行 RoR 项目,我遇到了一个以前从未遇到过的问题。

我有一个 "user profile" 和一个可选图像。如果图像存在,我想显示它,如果不存在,我显示一个占位符(存储在 assets => "admin/avatar.png" 中。所以,下面是我的示例代码:

-unless @user.image.nil?
    =image_tag @user.image.url,class:"img-responsive img-circle",style:"width:150px;height:150px;margin:auto;"
-else
    %img.img-responsive.img-circle{:src => image_path("admin/avatar.png"),style:"width:150px;height:150px;margin:auto;"}
%img.img-responsive.img-circle{:src => image_path("admin/avatar.png"),style:"width:150px;height:150px;margin:auto;"}

第一个

%img.img-responsive.img-circle{:src => image_path("admin/avatar.png"),style:"width:150px;height:150px;margin:auto;"}

不工作(并显示 "missing"),而 seconde 实际上在工作。我对此有点迷茫。

有人吗?

谢谢。

unless else是一种代码味

我建议的解决方案:

- if @user.image.present?
 = image_tag(@user.image.url, class:"img-responsive img-circle",style:"width:150px;height:150px;margin:auto;")
- else
 = image_tag('admin/avatar', class:"img-responsive img-circle", style:"width:150px;height:150px;margin:auto;")