为什么我的三元运算符代码返回两个条件?

时间:2017-03-02 23:10:16

标签: ruby-on-rails ruby image tags ternary-operator

在我的Rails应用程序中,我在创建新产品时输入的表单字段指示显示哪个图像。如果我进入'判决'文本框,这意味着产品很糟糕,所以我显示一个灰色的,不活跃的亚马逊按钮。

如果我输入'goodverdict'框,它是一个合法的产品,所以我们看到亚马逊的购买按钮,它与产品相关联,因为我在表格中输入了URL。我首先尝试使用present?,最近才将其切换为presence(这是下面的内容)。两者都有相同的结果。

但是当我只输入'goodverdict'框时,我得到了两个按钮(就好像两个参数都是真的一样)和文字说“假”?出现。

enter image description here

<div class="col-md-4" id="belowvid">
<%= @product.verdict.presence %> ? <%=@product.verdict %> <br> <%= image_tag('https://s3.amazonaws.com/isitcrap/amazon+gray+button.jpg', width: 275) %> :
<%= @product.goodverdict %> <br>
<%= link_to image_tag("https://s3.amazonaws.com/isitcrap/amazon-Button.png", width: 275), @product.buylink.html_safe, target: :_blank %>

这是来自由索引呈现的另一部分呈现的部分。

1 个答案:

答案 0 :(得分:2)

你的三元运算符没有运行,因为它不在ruby部分,而是在html中。

只有<% / %>标记内的内容才会以ruby的形式运行...其他所有内容都会像html一样打印到屏幕上。

在这种情况下 - 您可能想要的是这样的:

<% if @product.verdict.present? %>
  <%= @product.verdict %> <br> <%= image_tag('https://s3.amazonaws.com/isitcrap/amazon+gray+button.jpg', width: 275) %>
<% else %>
 <%= @product.goodverdict %> <br>
 <%= link_to image_tag("https://s3.amazonaws.com/isitcrap/amazon-Button.png", width: 275), @product.buylink.html_safe, target: :_blank %>
<% end %>