Более чистый способ сделать это в Rails - PullRequest
2 голосов
/ 30 августа 2010

У меня есть код в одном из моих представлений, подобных этому. Я чувствую, что у него слишком много условий. Все, что он делает, это проверяет состояние объекта ActiveRecord и устанавливает изображение. Есть ли лучший способ сделать следующее в Rails?

<td class="notification_msg">
  <% if notification.status == NOTIFICATION_STATUS.index("Failure") %>
     <img src="images/failure.png" style="vertical-align: middle"/>
  <% elsif notification.status == NOTIFICATION_STATUS.index("Success") %>
     <img src="images/success.png" style="vertical-align: middle"/>
  <% elsif notification.status == NOTIFICATION_STATUS.index("Warning") %>
     <img src="images/warning.gif" style="vertical-align: middle"/>
  <% else %>
     <img src="images/unknown.gif" style="vertical-align: middle"/>
  <% end %>
  <%= notification.message %> <%= cta_links_for(notification) -%>
</td>

Спасибо

Ответы [ 2 ]

5 голосов
/ 30 августа 2010

Я бы потянул логику в помощника. Ваш эрб:

<td class="notification_msg"> 
  <%= notification_image(notification.status) %> 
  <%= notification.message %> <%= cta_links_for(notification) -%> 
</td>

Тогда, на ваш взгляд, помощник:

def notification_image(status)
  name = NOTIFICATION_STATUS[status].downcase
  return image_tag "#{name}.png"
end

И, конечно же, никаких встроенных стилей. Поэтому поместите .notification_msg img{vertical-align:middle;} в ваш файл CSS.

4 голосов
/ 30 августа 2010

Вы можете изменить

 <img src="images/success.png" style="vertical-align: middle"/>

В

= image_tag "success.png

Тогда используйте CSS:

.notification_msg img{vertical-align:middle;}

Меня смущает, почему вы отображаете success.png при сбое, я добавлю больше информации в мой ответ, как только вы объясните, что:


Из того, что я понимаю здесь, что я сделал бы:

Еврорадио:

<td class="notification_msg">
  <%= image_tag "#{notification.status}.png" %>
  <%= notification.message %> <%= cta_links_for(notification) -%>
</td>

CSS:

.notification_msg img{vertical-align:middle;}

Это не ошибка, но я надеюсь, что это даст вам представление

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