Rails создает галерею миниатюр на мой взгляд - PullRequest
3 голосов
/ 12 января 2011

В настоящее время у меня есть массив, содержащий несколько URL-адресов к изображениям.

@images = [ "http://site/images/01.jpg", "http://site/images/02.jpg" ]

Всего 18 изображений

Я хотел бы взять этот массив и создать галерею миниатюр, где галерея составляет 3колонки по моему мнению .Выходной HTML-код будет

<table><br> <tr><br> <td><img src="http://site/images/01.jpg"></td><br> <td><img src="http://site/images/02.jpg"></td><br> <td><img src="http://site/images/03.jpg"></td><br> </tr><br> <tr><br> <td><img src="http://site/images/04.jpg"></td><br> <td><img src="http://site/images/05.jpg"></td><br> <td><img src="http://site/images/06.jpg"></td><br> </tr><br> </table>

Моя текущая реализация дает мне таблицу из одного столбца

<table>
<tr>
<% @images.each do | image | %>
<td><%= image_tag(image)%></td><br>
<% end %>
</tr>
</table>

В будущем я бы хотел, чтобы это было 6 столбцов вместо3 колонки.Я ищу способ сделать это чистым и гибким способом.

Я искал документацию Ruby и увидел Class Range (метод rng.step) http://www.ruby -doc.org / core / classes / Range.html

Не уверен, что этот класс Range метод шага может решить проблему, ноИнтересный пример.

Любые мысли, я все еще учусь и, может быть, я слишком обдумываю это?

Ответы [ 2 ]

7 голосов
/ 12 января 2011

использование each_slice()

<table>
  <% @images.each_slice(3) do |images| %>
    <tr>
      <% images.each do |image| %>
        <td><%= image_tag(image) %></td>
      <% end %>
    </tr>
  <% end %>
</table>
1 голос
/ 12 января 2011

непроверенная.Вам нужно использовать each_with_index и оператор модуля %.

<% @images.each_with_index | image, index | %>
   <% unless index % column_count == 0 %>
         <td><%= image_tag(image)%></td>
   <% else %>
         <td><%= image_tag(image) %></td>
      </tr>
      <tr>
   <% end %>
<% end %>
...