Почему этот блок не перебирает все мои флеш-сообщения?- Рельсы 3.1 - PullRequest
0 голосов
/ 11 октября 2011

Поэтому я пытаюсь применить другой класс к div, содержащему флэш-сообщение, в зависимости от типа флэш-сообщения (например, ошибка, уведомление и т. Д.).

У меня есть это вmy application.html.erb:

 <%- flash.each do |name, msg| -%>
        <% if name = "error" %>
            <%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message error" %>
        <% elsif name = "notice" %>
            <%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message success" %>
        <% elsif name = "warning" %>
            <%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message warning" %>
        <% end %>
      <%- end -%>

Но всегда выводится div с id=flash_error.

Почему это так?

Обновление 1:

Если я изменю проверки равенства на ==, кажется, что эта часть оператора if полностью пропускается.

 <%- flash.each do |name, msg| -%>
        <% if name == "error" %>
            <%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message error" %>
        <% elsif name = "notice" %>
            <%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message success" %>
        <% elsif name == "warning" %>
            <%= content_tag :div, msg, :id => "flash_#{name}", :class => "alert-message warning" %>
        <% end %>
      <%- end -%>

Если вы заметили, в приведенном выше коде у меня есть == для error и warning и = для notice.Ну, в этом случае он на самом деле выводит notice div, как я хочу.Кажется, что когда я делаю проверку для ="error", она полностью выходит из условия, независимо от того, была ли проверка верной.Но как только я добавляю ==, он даже не делает проверку, как кажется.Очень странно!

1 Ответ

6 голосов
/ 11 октября 2011

Может ли это быть потому, что вы не проверяете равенство?

Не проверяется равенство

<% if name = "error" %>

Проверяется равенство

<% if name == "error" %>

Это такжебудь то, что вы проверяете строку.Хэш-память индексируется с помощью символов.

Попробуйте

<% if name == :error %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...