Как использовать условие unless, не занимая места?

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-4

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-4

Вопрос:

Однако у меня есть карусель с несколькими миниатюрами видеороликов… если пользователь не загружает миниатюру, но загружает клип, будет это уродливое изображение-заполнитель. Я хотел бы сделать так, чтобы, если пользователь не загружает миниатюру, клип вообще не отображался в карусели.

Я пытался сделать это с:

        <% if @clips.any? %>
          <div class="queue_mone">
            <div class="jcarousel-skin-ie7">
              <div style="position: relative;" class="">
                <ul style="overflow: hidden; position: relative;" id="second-carousel" class="webcliplist first-and-second-carousel jcarousel-list jcarousel-list-horizontal">
                  <% @clips.each do |clip| %>
                    <li>
                      <%= link_to clip do %>
                          <%= image_tag(clip.thumbnail.url(:medium)) unless clip.thumbnail.blank? %>
                        <p style="padding-top:5px; font-family: 'SourceSansPro-Regular';"><%= clip.name unless clip.thumbnail.blank? %></p>
                      <% end %>
                    </li>
                  <% end %>
  

Проблема с использованием unless заключается в том, что есть пустое пространство, где клип не отображается. Как я могу сделать так, чтобы при отсутствии пустого пространства клип, в котором есть миниатюра, просто перемещался и занимал пустое место для миниатюр клипов?

Другими словами, это похоже на то, что клип без миниатюр все еще существует, но изображение и заголовок просто не отображаются. Я бы хотел, чтобы клип с миниатюрой помещался на место клипа без миниатюр, чтобы не было пробелов.

Спасибо!

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

1. Можете ли вы загрузить вывод html сюда.

Ответ №1:

Здесь для вас есть несколько вариантов:

вариант № 1: нет <li> , если нет миниатюры

 <% @clips.each do |clip| %>
  <% next if clip.thumbnail.blank? %>
  <li>
    <%= link_to clip do %>
      <%= image_tag(clip.thumbnail.url(:medium)) %>
      <p style="padding-top:5px; font-family: 'SourceSansPro-Regular';"><%= clip.name %></p>
    <% end %>
  </li>
<% end %>
  

вариант № 2: пустой <li> , если нет миниатюры

 <% @clips.each do |clip| %>
  <li>
    <% if clip.thumbnail.present? %>
      <%= link_to clip do %>
        <%= image_tag(clip.thumbnail.url(:medium)) %>
        <p style="padding-top:5px; font-family: 'SourceSansPro-Regular';"><%= clip.name %></p>
      <% end %>
    <% end %>
  </li>
<% end %>
  

вариант № 3: нет image_tag , если нет миниатюры, НО ссылка заголовок

 <% @clips.each do |clip| %>
  <li>
    <%= link_to clip do %>
      <%= image_tag(clip.thumbnail.url(:medium)) if clip.thumbnail.present? %>
      <p style="padding-top:5px; font-family: 'SourceSansPro-Regular';"><%= clip.name %></p>
    <% end %>
  </li>
<% end %>