2017-04-19 51 views
6

Sizin için kolay bir tane var.raylar delete_if mevcut makaleyi yok saymak için hashları kullanarak (Middleman)

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

ben yani don Middleman proxy kullanıyorum Ancak:

Ben şimdiki makale

Yani bu delete_if ile Middleman Blog kullanarak çalışır HARİÇ bir özellikli içerik bölümünü istiyorum current_article yöntemine erişiminiz var ...

Aşağıdaki sahte verileri (diğerleri arasında) içeren bir YAML yapısı var. gibi tup: veri> Site> casestudy> RASTGELE-ID423536.yaml (a CMS tarafından Oluşturulan) Eğer böyle şeyler bulacaksınız her yaml dosyası içinde

enter image description here

:

:id: 2k1YccJrQsKE2siSO6o6ac 
:title: Heyplace 

Benim config.rb Benim şablon dosyası aşağıdaki tutan bu

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

benziyor Geçerli makale isnt görüntülenen böylece içeriği alır

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

Benim döngü

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

Yani, nasıl bu durumda delete_if kullanabilirsiniz benim soru şu?

ben ama boşuna, gibi şeyler denedim:

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

Herhangi bir yardım takdir! Teşekkür ederim!

çözüldü, ben contentful_middleman sürdürme olduğum @ David Litvak

cevap

4

ait

<% 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 %> 

Nezaket yapmak sona erdi. Yerel olarak kısmi olarak this ürününü gönderebileceğinizi, ardından içeriğiniz üzerinden yineleyebileceğinizi ve this kimliğiyle eşleşeni hariç tuttuğunuzdan emin olmanızı sağlar.

+0

Merhaba David, bana yardım etmek için zaman ayırdığınız için teşekkürler. Bunu kabaca (karmaşadan) karmalarla nasıl yapacağımı biliyor musunuz? Bunun nasıl yapıldığına aşina değilim. Diziler ile biraz daha kolay –

+0

Aşağıdaki tür çalıştı, ancak şimdi önbellekte siliniyor. Karoları yeniden görmek için sayfayı birkaç kez yeniden yüklemem gerekiyor. Çok garip '<% content.reject {| anahtar, değer | anahtar> = this.id} .sort_by {| index | rand} .each do | id, bu | %> <% = kısmi "kısmi/kiremit"%> <% end %> ' –