rails delete_if использует хэши для игнорирования текущей статьи (посредник)

У меня есть легкий для вас, ребята.

Я хочу иметь раздел избранного контента, в котором текущая статья будет ИСКЛЮЧЕНА

Так что это работает с использованием Блога посредника с delete_if:

<% blog(content).articles.delete_if{|item| item == current_article}.each do |article| %>
  <%= article_content %>
<% end %>

Однако я использую прокси-серверы Middleman, поэтому у меня нет доступа к методу current_article...

У меня есть структура YAML, которая содержит следующие фиктивные данные (среди прочего) с настройкой папки, например: data> site> caseStudy> RANDOM-ID423536.yaml (сгенерировано CMS)

введите здесь описание изображения

Внутри каждого файла yaml вы найдете такие вещи, как:

:id: 2k1YccJrQsKE2siSO6o6ac
:title: Heyplace

Мой config.rb выглядит так

data.site.caseStudy.each do | id, this |
  proxy "/cases/#{this.slug}/index.html", "/cases/cases-template.html", :locals => { this: this }, :ignore => true
end

Мой файл шаблона содержит следующее

<%= partial(:'partials/footer', :locals => {:content => data.site.caseStudy, :title => 'See more projects'}) %>

Моя петля, которая получает контент

<% content.each do |id, this| %>
  <%= partial "partials/tile" %>
<% end %>

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

Я пробовал такие вещи, но безрезультатно:

<% content.delete_if{|e| e.title == content.title}.each do |id, this| %>
  <%= partial "partials/tile" %>
<% end %>

Любая помощь приветствуется! Спасибо!

Решил, в итоге сделал

<% content.reject{ | id, item| item == this }.each do |id, this| %>
<%= partial "partials/tile", :locals => { :this => this, :dir => "/#{this.content_type_id.downcase}/", :secondary => 'View' } %>
<% end %>

Предоставлено @David Litvak


person umbriel    schedule 19.04.2017    source источник


Ответы (1)


Я сопровождаю contentful_middleman. Похоже, вы можете просто отправить this в частичное как локальное, затем перебрать свой контент и убедиться, что вы исключили тот, который соответствует идентификатору this.

person David Litvak    schedule 19.04.2017
comment
Привет Дэвид, спасибо, что нашли время, чтобы помочь мне. Вы примерно знаете, как бы я это сделал с хешами (от contentful)? Я не очень хорошо разбираюсь в том, как это сделать. С массивами немного проще - person umbriel; 20.04.2017
comment
Сработало следующее, но теперь они удаляются в кеше. Мне приходится перезагружать страницу пару раз, чтобы плитки снова появились. Очень странно <% content.reject{|key, value| key >= this.id }.sort_by{ |index| rand }.each do |id, this| %> <%= partial "partials/tile" %> <% end %> - person umbriel; 21.04.2017