Получить каждую n запись из базы данных - Ruby на Rails - PullRequest
2 голосов
/ 09 июля 2020

Я пытаюсь создать адаптивную сетку изображений (вот пример из w3schools: Responsive Image Grid ). В примере они имеют следующее html:

<div class="row"> 
  <div class="column">
    <img src="/w3images/wedding.jpg" style="width:100%">
    <img src="/w3images/rocks.jpg" style="width:100%">
    <img src="/w3images/falls2.jpg" style="width:100%">
    <img src="/w3images/paris.jpg" style="width:100%">
    ...
  </div>
  <div class="column">
    <img src="/w3images/underwater.jpg" style="width:100%">
    <img src="/w3images/ocean.jpg" style="width:100%">
    <img src="/w3images/wedding.jpg" style="width:100%">
    <img src="/w3images/mountainskies.jpg" style="width:100%">
    ...
  </div>  
  <div class="column">
    <img src="/w3images/wedding.jpg" style="width:100%">
    <img src="/w3images/rocks.jpg" style="width:100%">
    <img src="/w3images/falls2.jpg" style="width:100%">
    <img src="/w3images/paris.jpg" style="width:100%">
    ...
  </div>
  <div class="column">
    <img src="/w3images/underwater.jpg" style="width:100%">
    <img src="/w3images/ocean.jpg" style="width:100%">
    <img src="/w3images/wedding.jpg" style="width:100%">
    <img src="/w3images/mountainskies.jpg" style="width:100%">
    ...
  </div>
</div>

Однако они используют содержимое stati c. Я хочу сделать контент динамическим c. Я провел небольшое исследование и нашел следующее решение: Возвращать каждую n-ю строку из базы данных с помощью ActiveRecord в рельсах . Не уверен, что это правильный путь, но моя цель - поместить каждый элемент n в каждый column без указания лимита.

В настоящее время у меня в контроллере есть следующий код:

def index
  @photos = Photos.is_active.all
end

Индексное представление:

= render partial: "photos", collection: @photos

Есть ли правильный способ реализовать решение из w3school и создать динамический c контент с Ruby на Rails l oop?

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

in_groups_of делает именно то, что вы ищете.

Разделяет или выполняет итерацию по массиву группами размером number, заполняя все оставшиеся слоты символом fill_with, если это не false.

%w(1 2 3 4 5 6 7 8 9 10).in_groups_of(3) {|group| p group}
["1", "2", "3"]
["4", "5", "6"]
["7", "8", "9"]
["10", nil, nil]

%w(1 2 3 4 5).in_groups_of(2, '&nbsp;') {|group| p group}
["1", "2"]
["3", "4"]
["5", "&nbsp;"]

%w(1 2 3 4 5).in_groups_of(2, false) {|group| p group}
["1", "2"]
["3", "4"]
["5"]
1 голос
/ 09 июля 2020

Редактирование исходного вопроса. Я бы предложил:

Each_slice: https://apidock.com/ruby/Enumerable/each_slice

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