Как закрыть контейнер в цикле?
-
29-10-2019 - |
Вопрос
У меня есть список товаров, и я хочу показывать рекламу в фиде товаров.
Я хочу что-то вроде:
общийВ ЕРБ я бы:
общийКак вы переводите это на Haml или Slim?
Я не хочу разрывать цикл на два цикла по двум причинам: я не знаю количество продуктов по страницам и у меня есть более сложный код, который использует те же приемы HTML с помощником Rails cycle()
.Так что мне очень поможет найти трюк, который сделает это возможным.
Решение
Haml позволяет вам писать необработанный HTML в качестве вывода, когда вы этого хотите.Как ни странно, вы можете использовать это для достижения своих целей здесь, как вы это сделали с Erb:
общийОтступ выглядит странно, но вы можете видеть, что у вас есть два контейнера с материалами AdSense снаружи.
Другие советы
В HAML
общийЯ бы не стал возиться с контейнером, просто настроил CSS для работы с классами продукта и рекламы.(Что также указывает на тот факт, что у вас есть несколько идентификаторов с одним и тем же именем, их следует заменить на классы).
Это должно сработать?
Возможное решение Haml с использованием помощника по генерации кода кода :
общийЭто своего рода уловка, поскольку мы «имитируем» закрытие и открытие контейнера div;насколько знает Хэмл, мы все еще в нем.По этой причине он также вводит небольшое повторение в том, что вы должны указать "контейнерный" класс (и любые другие атрибуты, которые может иметь div) в двух местах.
Это решение похоже на решение @ Phrogz , но оно немного более "хамл-ли" и позволяет вамиспользуйте синтаксис Haml для определения блока добавления