Рендеринг h3 только если этот тип еще не существует - PullRequest
1 голос
/ 01 мая 2020

Я новичок в ruby и работаю над проектом. У меня есть база данных, которая показывает различные продукты, ссылки и файлы SVG. Я храню его в коллекции и просматриваю предметы. На данный момент я хочу отображать имя типа, только если оно не существует.

`<%= render partial: "site/main, collection: [
     {
        type: 'Garden',
        link: '/garden/pot',
        svg: '//images/pot.svg',
        name: 'Pot of your dreams',
        description: 'A perfect pot for any household'
    },
    {

        link: '/garden/flower',
        svg: '//images/flower.svg',
        name: 'A perfect flower',
        description: 'You need to buy it for your garden!'
    }
]`

Я хочу визуализировать h3, только если он еще не существует: <h3><%=main[:type]%></h3> Таким образом, он отображается только один раз, а не все время. Элемент h3 будет отображать Сад только один раз.

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Лучший подход будет группировать вашу коллекцию по типу. А затем визуализировать коллекцию в типе как другую коллекцию.

Вот что я имею в виду (не стесняйтесь менять имена): после перегруппировки по типу коллекции вы получите что-то вроде этого (у него может быть другое формат, но вы поймете идею):

collection = [
{ type: 'Garden', type_collection: [
     {
        link: '/garden/pot',
        svg: '//images/pot.svg',
        name: 'Pot of your dreams',
        description: 'A perfect pot for any household'
      },
      {
        link: '/garden/flower',
        svg: '//images/flower.svg',
        name: 'A perfect flower',
        description: 'You need to buy it for your garden!'
      }
    ],
  type: 'Type #2', type_collection: [
     {
        link: '/garden/flower2',
        svg: '//images/flower.svg',
        name: 'A perfect flower from type2',
        description: 'You need to buy it for your garden!'
      }
    ]
}]

тогда ваш сайт / основной может иметь что-то вроде этого:

<p>
  <h3><%= main[:type] %></h3>
  <%= render partial: 'site/type_collection', collection: main[:type_collection] %>
</p>

и ваш сайт / type_collection будет иметь то, что вы изначально имел:

<p>
  <%= type_collection[:link] %>
</p>
0 голосов
/ 01 мая 2020

В вашей части, которая отображает элементы коллекции, вы можете сгенерировать h3, используя tag helper

<%= tag.h3 item[:type].presence || main[:type] %>

, предполагая, что каждый элемент в коллекции представлен местными жителями item

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