目前,我认为我的观点如下:
<table>
<tr>
<% if item.status == nil %>
<td><%= image_tag "/assets/nil.gif" %></td>
<% else %>
<% if item.status == "1" %>
<td><%= image_tag "/assets/yes.gif" %></td>
<% else %>
<td><%= image_tag "/assets/no.gif" %></td>
<% end %>
<% end %>
</tr>
...
我可以在这里使用三元运算符吗?我不知道放在哪里?或者:使用嵌入式ruby和html的这种组合。
答案 0 :(得分:4)
<%= 1 == 1 ? "one is one" : "one is two" %>
# outputs "one is one"
因此:
<%= image_tag "/assests/#{ item.status == "1" ? "yes" : "no"}.gif" %>
但是,在这种情况下,由于您要测试三个可能的值,因此辅助方法中的switch
语句可能是最佳的。
# app/helpers/items_help.rb
def gif_name(status)
case status
when nil
"nil"
when "1"
"yes"
else
"no"
end
end
# app/views/items/action.html.erb
<td><%= image_tag "/assests/#{gif_name(item.status)}.gif" %></td>
答案 1 :(得分:0)
你可以做到
<%= item.status.nil? ? <td><%= image_tag "/assets/nil.gif" %></td> : <td><%= image_tag "/assets/#{item.status == '1' ? 'yes.gif' : 'no.gif'" %></td>
或
<%= item.status.nil? ? <td><%= image_tag "/assets/nil.gif" %></td> : item.status == "1" ? <td><%= image_tag "/assets/yes.gif" %></td> : <td><%= image_tag "/assets/no.gif" %></td> %>
三元运算符通过condition ? condition_true : condition_false