我在视图中为登录页面发出了登录警报:
<% if alert %>
<div class="row">
<div class="card-panel blue lighten-4"><%= alert['message'] %></div>
</div>
<% end %>
即使警报消息为空,卡面板仍将呈现为无文本。
如果没有消息,如何使卡面板完全不渲染。
这个:
if alert
只是检查是否alert
是false
或以外的其他东西nil
。因此,如果alert
是哈希,则测试将始终通过,并且您会得到一张空卡。
如果alert
始终是哈希,那么您可以说:
if alert['message'].present?
这将照顾到消息为空字符串,非空字符串,仅包含空格,哈希中'message'
不存在密钥alert
等。
如果alert
可以的nil
话,您可以说以下其中一项:
if alert && alert['message'].present?
if alert.to_h['message'].present?
if alert&.fetch('message', nil)
alert.to_h
给你alert
if alert
is Hash但给你一个空Hash if alert
is nil
。alert&.fetch('message', nil)
使用安全导航运算符(&.
)隐藏nil
支票,并使用Hash#fetch
而不是通常的括号来查找密钥。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句