Как не показывать HTML и CSS, если условие выполняется в ERB - PullRequest
0 голосов
/ 12 марта 2020

Я сделал предупреждение о входе в систему для своей страницы входа в своих представлениях:

<% if alert %>
<div class="row">
      <div class="card-panel blue lighten-4"><%= alert['message'] %></div>
  </div>
<% end %>

Даже если сообщение с предупреждением пустое, панель карты по-прежнему отображается без текста.

Как мне сделать так, чтобы панель карты вообще не отображалась, если нет сообщения.

1 Ответ

0 голосов
/ 12 марта 2020

Это:

if alert

просто проверяет, является ли alert чем-то отличным от false или nil. Так что если alert - это Ха sh, то тест всегда будет проходить, и вы получите пустую карту.

Если alert всегда будет Ха sh, то вы можете скажем:

if alert['message'].present?

Это позаботится о том, чтобы сообщение было пустой строкой, непустой строкой, содержащей только пробел, ключ 'message' отсутствует в alert Ha sh, et c.

Если alert может быть nil, то вы можете сказать одно из них:

if alert && alert['message'].present?

if alert.to_h['message'].present?

if alert&.fetch('message', nil)

alert.to_h дает вам alert, если alert является Ха sh, но дает пустое Ха sh, если alert равно nil. alert&.fetch('message', nil) использует оператор безопасной навигации (&.), чтобы скрыть проверку nil, и использует Hash#fetch вместо обычных скобок для поиска ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...