Ruby on Rails - 使用each_slice查找最后一轮

时间:2016-07-14 14:02:25

标签: ruby-on-rails ruby each

我在我的应用程序中使用each_slice每4张图片显示广告代码

我正是这样做的:

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

我在last_slide中添加了post_controller方法,当我在show - 视图中运行/ before_action 时,我的参数数量错误不要在我的控制器中运行,没有任何反应。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

可以通过两种不同的方式完成。第一个是 easy ,而第二个解决方案更复杂。

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