Рельсы, если больше 0

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я только начал играть с rails, каков наилучший способ сделать следующее: @events.x — целое число, если его значение не равно> 0, оно должно быть скрыто.

 <div class="chartwell radar">
  <span style="color: #fff;">dx</span>
  <span style="color: #3498db"><%= @events.design %></span>
  <span style="color: #1abc9c"><%= @events.typography %></span>
  <span style="color: #2c3e50"><%= @events.code %></span>
  <span style="color: #f8ff08"><%= @events.art %></span>
  <span style="color: #fd79f2"><%= @events.lifestyle %></span>
</div>
  

Комментарии:

1. Можете ли вы объяснить немного больше?

2. @events указывает на мою базу данных, где «дизайн», «типография» и т. Д. Хранятся в виде целых чисел. Если такие целые числа имеют значение 0, оно должно быть скрыто в приложении. Что-то вроде [if == 0 (скрыть это)]

Ответ №1:

Согласно вашему комментарию, вы хотите показать значение, только если значение целого числа не равно 0. таким образом, вы можете использовать этот пример:

 <span style="color: #3498db"><%= @events.design unless @events.design.to_i == 0 %></span>
  

Или, если вы хотите, чтобы диапазон тоже не отображался

 <% unless @events.design.to_i == 0 %>
  <span style="color: #3498db"><%= @events.design %></span>
<% end %>
  

Дайте мне знать, если вы имели в виду что-то другое.

Ответ №2:

Когда вы говорите «это скрыто», что такое «это»? Весь div выше? Что-то еще?

Если вы хотите условно отобразить div для @events.x, например, @events.art, вы могли бы сделать

 <% unless @events.art == 0 %>
  <span style="color: #f8ff08"><%= @events.art %></span>
<% end %>
  

выполнение этого для всех из них немного утомительно и повторяющееся. Вы могли бы высушить его следующим образом:

 <div class="chartwell radar">
  <span style="color: #fff;">dx</span>
  <% 
  [["#3498db", "design"],
  ["#1abc9c", "typography"],
  ["#2c3e50", "code"],
  ["#f8ff08", "art"],
  ["#fd79f2", "lifestyle"]].each do |color, method| %>
    <% value = @events.send(method) %>
    <% unless value == 0 %>
      <span style="color: <%= color %>;"><%= value %></span>   
    <% end %>
  <% end %>
</div>