在一行if..else语句中显示图像路径而不是图像

时间:2015-06-19 15:30:40

标签: ruby-on-rails ruby ruby-on-rails-4

我有以下代码行:

<%= "Brand: " + (@user.activated ? "image_tag('brand1.png', class: 'branding')" : "image_tag('brand2.png', class: 'branding')") + "(#{@user.activated_at})" %>

它应该显示(显示的图像取决于用户是否被激活):

  

品牌:{image} 2015年6月19日

而不是图像,它显示文字图像路径(所以文本)。我该如何调整代码以显示实际图像呢?

2 个答案:

答案 0 :(得分:3)

编写一些erb模板代码真的很奇怪。正如@mudasobwa所说你在图像标签周围引用了错误,并且在erb标签中添加了许多字符串是混乱的,脆弱的和不可读的。这两个图像标签几乎完全相同,因此也可以干掉。

我会做我认为你想做的事情:

<% graphic =  @user.activated ? "brand1.png" : "brand2.png" %>
Brand: <%= image_tag(graphic, class: 'branding') %> (<%= @user.activated_at %>)

答案 1 :(得分:1)

您可以尝试使用html_safe

在单个代码中关注一个代码
<%= "Brand:  #{(@user.activated ? image_tag('brand1.png', class: 'branding') : image_tag('brand2.png', class: 'branding'))} (#{@user.activated_at})".html_safe %>

或者更聪明的方式

<%= "Brand:  #{image_tag(@user.activated ? 'brand1.png' : 'brand2.png' , class: 'branding')} (#{@user.activated_at})".html_safe %>