当今大多数市场网站都将广告部分注入列表的中间,从而为用户提供了一个注册表单。
希望更好地了解each_with_index
的工作方式以及将div
插入对象列表的正确方法。让我们列出一个列表,例如10个拳击工作室,并使用以下代码将div
注入列表的中间。如何在不完全替换记录的情况下注入div?
预计:10个拳击工作室,其中新的div排名第六(总共11个项目)
实际:9个拳击工作室,其中新的div取代了排名第六的拳击工作室之一
@list.each_with_index do |item, idx|
if((idx + 1) % 6 == 0)
# Insert ad partial
else
# Print out each object in the list
end
end
答案 0 :(得分:1)
给出变量
@list = (1..10).map { |n| "item #{n}"}
#=> ["item 1", "item 2", "item 3", "item 4", "item 5", "item 6", "item 7", "item 8", "item 9", "item 10"]
@signup = 'signup form'
position = 6
您可以迭代并打印要插入的元素,而无需修改数组:
@list.each_with_index do |item, idx|
p @signup if position == idx + 1 # render the form
p item
end
# "item 1"
# "item 2"
# "item 3"
# "item 4"
# "item 5"
# "signup form"
# "item 6"
# "item 7"
# "item 8"
# "item 9"
# "item 10"
答案 1 :(得分:0)
使用Array#[]
:
> list = [1,2,3]
#⇒ [1, 2, 3]
> list[1...1] = 0 # insert at position 1
> list
#⇒ [1, 0, 2, 3]
在第6个位置插入它:
list = [1] * 15
(5...list.size).step(6) { |i| list[i...i] = 0 }
list
#⇒ [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]