如何使用 EEx phoenix 模板检查嵌套值中的 nil
How to check nil in nested value with EEx phoenix template
我有以下代码。
我想向大家展示点。
所有成员至少有 point1。
一些成员有 point2 或 point3。这意味着某些成员的point2或3为零。
<%= for member <- @members do %>
<%= member.point1 %> <%= member.point2 %> <%= member.point3 %>
<% end %>
下面是我的图片
<%= unless is_nil(member.point2) %>
<%= member.point2 %>
<% end %>
我想避免在 html.eex 模板中出现 nil 错误。
当我使用ruby时,它有nil检查功能。
一般如何避免?
应该清楚地区分 <%
和 <%=
模板标签。
前者评估代码,后者评估代码,打印结果。 EEx
不喜欢 <%= nil %>
语句和 unless/1
returns nil
如果条件为真并且没有提供 else
子句。
也就是说,下面的方法可行。
# ⇓⇓⇓ DO NOT PRINT IT OUT
<% unless is_nil(member.point2) %>
<%= member.point2 %>
<% end %>
此外,您可以通过将 nil
转换为可接受的空字符串来欺骗引擎。
<% for member <- @members, not is_nil(member) do %>
<%= to_string(member.point1) %>
<%= to_string(member.point2) %>
<%= to_string(member.point3) %>
<% end %>
二进制 'or' 运算符 (||
) 将 nil
视为虚假值(以及 false
),因此您可以使用它来转换 nil
(和false
)为特定值并保持其他值不变:
<%= member.point1 %> <%= member.point2 || "" %> <%= member.point3 || "" %>
这会将 nil
和 false
转换为空字符串,同时如果值是其他值则保留原样。
我有以下代码。 我想向大家展示点。 所有成员至少有 point1。 一些成员有 point2 或 point3。这意味着某些成员的point2或3为零。
<%= for member <- @members do %>
<%= member.point1 %> <%= member.point2 %> <%= member.point3 %>
<% end %>
下面是我的图片
<%= unless is_nil(member.point2) %>
<%= member.point2 %>
<% end %>
我想避免在 html.eex 模板中出现 nil 错误。 当我使用ruby时,它有nil检查功能。
一般如何避免?
应该清楚地区分 <%
和 <%=
模板标签。
前者评估代码,后者评估代码,打印结果。 EEx
不喜欢 <%= nil %>
语句和 unless/1
returns nil
如果条件为真并且没有提供 else
子句。
也就是说,下面的方法可行。
# ⇓⇓⇓ DO NOT PRINT IT OUT
<% unless is_nil(member.point2) %>
<%= member.point2 %>
<% end %>
此外,您可以通过将 nil
转换为可接受的空字符串来欺骗引擎。
<% for member <- @members, not is_nil(member) do %>
<%= to_string(member.point1) %>
<%= to_string(member.point2) %>
<%= to_string(member.point3) %>
<% end %>
二进制 'or' 运算符 (||
) 将 nil
视为虚假值(以及 false
),因此您可以使用它来转换 nil
(和false
)为特定值并保持其他值不变:
<%= member.point1 %> <%= member.point2 || "" %> <%= member.point3 || "" %>
这会将 nil
和 false
转换为空字符串,同时如果值是其他值则保留原样。