我想显示不同的图片版本:
第一篇文章:大横幅
第二个:漂浮到右/左的小横幅
所以,首先:使用cycle()但不起作用:
= cycle(image_tag(banner_big), image_tag(banner_small)
或
= image_tag(cycle(banner_big_path, banner_small_path))
仅显示第一张图片
有一种合适的方法来制作这样的人吗?
答案 0 :(得分:2)
你的问题是rails希望你每次都使用相同的字符串集来调用循环。目前,您正在为每个循环调用传递一组不同的字符串,因此每次都会重置循环。新的循环总是以它们的第一个值开始,因此就是你描述的结果。
假设您的文章中包含名为small_path
,big_path
的方法,例如
article.send(cycle("big_path","small_path"))
应返回备用图像路径。
答案 1 :(得分:0)
您可以使用session
工具在那里存储索引并使用它们。例如:
# application_helper.rb
def session_banner_index
session[:banner_index] || 0
end
def session_banner(*list)
list[session_banner_index % list.length]
end
# application_controller.rb
def increment_session_banner_index!
session[:banner_index] = (session[:banner_index] || 0) + 1
end
这些辅助方法接近您要求的界面:
= image_tag(session_banner(banner_big, banner_small))