2016-07-14 41 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

我在post_controller並得到錯誤的參數數目,當我運行/ before_action在我show - 視圖,當添加last_slide方法我沒有在我的控制器中運行,沒有任何反應。

+0

if語句,你可以將其括在一個像這樣'如果image.id = images.last! .id' –

+0

是或'如果group.include?(images.last)' – jphager2

+0

@AAnkudovich它沒有工作:/ – Rubioli

回答

0

它可以以兩種不同的方式完成。第一個是簡單一個,而第二個解決方案更復雜。

1解決方案(感謝jphager2):

if group.include?(images.last) 

2溶液:

- @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張圖片之間插入廣告的目標,您可以利用Rails的渲染方法以及collection和spacer_template選項。

# 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