我已经确认 app["rating"] == 0 在 rails 控制台中。鉴于此,我正在尝试编写一个 if/else 语句,该语句将打印出某些文本,但在这样做时遇到了麻烦。
有什么建议吗?
<% if <%= app["rating"] %> == 0 %>
no rating
<% end %>
我已经确认 app["rating"] == 0 在 rails 控制台中。鉴于此,我正在尝试编写一个 if/else 语句,该语句将打印出某些文本,但在这样做时遇到了麻烦。
有什么建议吗?
<% if <%= app["rating"] %> == 0 %>
no rating
<% end %>
如果您使用的是 ERB 模板,您应该这样做:
<% if app["rating"] == 0 %>
no rating
<% end %>
我不知道你为什么要这样嵌套你的模板声明。
请记住,内部的任何内容都<% ... %>
被评估为文字 Ruby 代码。如果您希望显示该评估的结果,请使用<%= ... %>
. 由于那里有非 Ruby 代码,因此if
将具有显示或不显示该部分的效果。
<%
和之间的所有%>
内容都是插值的,所以就这样做
<% if app["rating"] == 0 %>
html content
<% end %>
无需<% %>
在 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"]) %>
假设您正在使用 ERB,请执行以下if/else
操作:
<%if app["rating"] == 0 %>
No Rating
<%elsif app["rating"] == 10 %>
rating 10
<%elsif app["rating"] == 20 %>
rating 20
etc...
<% end %>