В представлении я создаю таблицу следующим образом:
<% @businesses.each do |b| %>
<td>
<%= b.value %>
</td>
У меня 3 изображения:
green-up.png
red-down.png
circle.png
Я хочу показать зеленую стрелку вверх, если b.value положительный, круг, если он равен 0, и красная стрелка вниз, если она отрицательная.
Пример, если положительный:
<td>
<img src='green-up.png'>12
</td>
<td>
<img src='circle.png'>0
</td>
Я создаю отчет, поэтому есть много таких проверок. Есть ли лучший способ, чем использовать целую кучу операторов if?
Хорошее место для начала было бы помощником.
# app/helpers/businesses_helper.rb
module BusinessesHelper
def business_icon_for(value)
if value > 0
image_tag 'green-up.png', alt: 'Positive'
elsif value == 0
image_tag 'circle.png', alt: 'No change'
else
image_tag 'red-down.png', alt: 'Negative'
end
end
end
Тогда, на ваш взгляд:
<% @businesses.each do |b| %>
<td>
<%= business_icon_for b.value %>12
</td>
<td>
<%= business_icon_for b.value %>0
</td>
<% end %>
Вы можете создать метод экземпляра в своей Business
модели:
def image
return 'green-up.png' if value > 0
return 'red-down.png' if value < 0
'circle.png'
end
И тогда, на ваш взгляд
<img src='<%= b.image %>'>
Вы можете справиться с этим, просто изменив свой объект,
Просто добавьте атрибут в имя объекта bean- образа вместе со значением
Название изображения, которое вы можете установить в bean, при настройке значения для bean-компонента на основе значения (отрицательный, нулевой или положительный).
Тогда вам не нужно делать какой-либо код для выбора правильного изображения,
просто перебирайте список сущностей и добавьте ниже код в html.
<td>
<img src='<%= b.image %>'><%= b.value %>
</td>