2016-07-14 2 views
0

내 응용 프로그램에 each_slice을 사용하여 광고 코드을 4 장마다 표시합니다.Ruby on Rails - each_slice를 사용할 때 마지막 라운드를 찾습니다.

이 내가 그 일을하고 어떻게 : 나는 마지막 라운드에 광고를 게재하지 않기 때문에 나는 마지막 라운드를 발견하고 그것을 방지하려면 어떻게

- @post.images.each_slice(4) do |group| 
    - group.each do |image| 
    // My images 

    %div.ads 
    // My ads code 

광고를 표시합니다.

내가 여기에서 말하는 수행했다, 그러나 운 : How to know that we're on "the last round" of a .each_slice

내가 인수 내가 내 show -보기에 실행/before_action 그와 나의 post_controller 얻을 잘못된 번호에 last_slide 방법을 추가하지 나는 을 내 컨트롤러에서으로 실행하지 않지만 아무런 변화가 없습니다.

+0

당신이 그렇게'경우 image.id = images.last 같은 묶 수 .id' –

+0

예 또는'group.include? (images.last)' – jphager2

+0

@AAnkudovich 작동하지 않음 :/ – Rubioli

답변

0

두 가지 방법으로 수행 할 수 있습니다. 첫 번째 것은 쉬운이며, 두 번째 솔루션은 더 복잡합니다.

1 솔루션 (감사 jphager2에) :

if group.include?(images.last) 

이 솔루션! if 문

- @post.images.each_slice(2).each_with_index do |group, index| 
    - group.each_with_index do |image| 
    // your code 
    - if index < group.size 
    // Ad code 
0

4 개의 이미지 사이에 광고를 삽입하려는 목표를 달성하려면 collection 및 spacer_template 옵션으로 Rails의 렌더링 메소드를 활용할 수 있습니다.

# The view 
= render partial: 'image_group', collection: @images.each_slice(4).to_a, spacer_template: 'advertisement' 

# _image_group.html.haml 
= render partial: 'image', collection: image_group 

# _image.html.haml 
// Your image code 

# _advertisement.html.haml 
%div.ads 
    // Your Ads Code