1

我已经确认 app["rating"] == 0 在 rails 控制台中。鉴于此,我正在尝试编写一个 if/else 语句,该语句将打印出某些文本,但在这样做时遇到了麻烦。

有什么建议吗?

    <% if <%= app["rating"] %> == 0 %>
    no rating
    <% end %>
4

4 回答 4

4

如果您使用的是 ERB 模板,您应该这样做:

<% if app["rating"] == 0 %>
no rating
<% end %>

我不知道你为什么要这样嵌套你的模板声明。

请记住,内部的任何内容都<% ... %>被评估为文字 Ruby 代码。如果您希望显示该评估的结果,请使用<%= ... %>. 由于那里有非 Ruby 代码,因此if将具有显示或不显示该部分的效果。

于 2013-03-14T18:56:49.983 回答
1

<%和之间的所有%>内容都是插值的,所以就这样做

<% if app["rating"] == 0 %>
  html content
<% end %>
于 2013-03-14T18:57:46.037 回答
1

无需<% %>在 if 语句中嵌套 erb 标签。例如:

<% if app["rating"] == 0 %>
  no raiting
<% end %>

但是,当您将条件逻辑放入视图时,您会模糊 MVC 绘制的线条。在不深入讨论有关演示者或 DSLS 的情况下,处理此问题的最简单方法是添加一个辅助方法。

假设这是在一个名为的控制器中,apps_controller.rb您将apps_helper.rb/app/helpers文件夹中有一个。您可以创建一个看起来像这样的辅助方法:

def display_rating(rating)
  rating = "No Rating" if rating == 0
  concat(rating)
end

然后,在您看来,您可以通过使用<%= display_rating(app["rating"]) %>

于 2013-03-14T19:02:49.867 回答
0

假设您正在使用 ERB,请执行以下if/else操作:

 <%if app["rating"] == 0 %>
   No Rating
   <%elsif app["rating"] == 10 %>
      rating 10 
   <%elsif app["rating"] == 20 %>
      rating 20
       etc...
 <% end %>
于 2013-03-14T18:56:21.270 回答