2017-04-19 14 views
6

나는 쉬운 편이 군.rails delete_if 현재 기사를 무시하기 위해 해시 사용 (중문)

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

내가 돈 때문에 중매인 프록시를 사용하고 그러나 :

나는 현재 문서

그래서이 delete_if와 중매인 블로그를 사용하여 작동 배제하는 기능을 갖춘 콘텐츠 섹션을 갖고 싶어 current_article 메서드에 대한 액세스 권한이 있습니다 ...

나는 폴더 se를 사용하여 다음 모의 데이터 (다른 것들 중에서)를 보유하고있는 YAML 구조체를 가지고 있습니다. 같은 TUP : 데이터> 사이트> 사례 연구> RANDOM-ID423536.yaml (CMS를 생성하는) 당신은 같은 물건을 찾을 수 있습니다 각 yaml 파일 내부

enter image description here

:

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

어떤 도움에 감사드립니다! 고맙습니다!

는 해결, 내가 contentful_middleman의 메인테이너 해요 @ 데이비드 Litvak

답변

4

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

씨의 일을 끝났다. this을 로컬로 부분 전송 한 다음 콘텐츠를 반복하고 ID가 this 인 것을 제외해야합니다.

+0

안녕하세요. David, 시간을내어 도와 주셔서 감사합니다. 당신은 대략 내가 해시로 어떻게 할 수 있는지 아십니까? 나는 그 일을하는 방법에 익숙하지 않다. 배열을 사용하면 조금 더 편합니다. –

+0

다음 종류의 작업은 가능하지만 이제 캐시에서 삭제됩니다. 타일을 다시 표시하려면 페이지를 몇 번 새로 고쳐야합니다. 아주 이상한 '<% content.reject {| key, value | key> = this.id} .sort_by {| index | rand}. 각 id | this | %> <% = 부분 "부분/타일"%> <% end %>' –