标题很别扭,但这就是我想做的。
假设我有 4 张图片。每张图片都有两种文件大小(770 x 350
&& 370 X 110
)-有点similar to this .
我想做的是循环遍历 @products
的集合(每个 product
都有一个具有多种尺寸的图像),这样 770 image
在每次页面加载时都不同。
即我想给所有产品 1/4 的机会出现在我 View 的 770 插槽中 - 而无需我手动更改它(比如给一个 product
一个特殊的“特色”标志)。
所以我有 4 个产品的集合,每个产品有 2 个不同尺寸的 2 张图片。我希望页面上的图像布局随着每次页面重新加载而改变 - 不像轮播。
假设我要使用的两个 image_tag
语句是:
<%= image_tag product.image_url(:main_banner).to_s %>
<%= image_tag product.image_url(:banner_thumb).to_s %>
其中 product
是循环遍历集合 @products
的迭代器实例。
我很乐意尽可能做到 DRY - 我尝试用 1 个部分来完成它,但是那变得越来越困惑并且无法像我希望的那样工作。
如果我应该添加任何说明,请告诉我。
为了它的值(value),这就是我正在尝试的:
主页#index
<%= render :partial => 'home/featured', :collection => @products, :as => :product %>
主页#_featured
<div class="span8 featured">
<%= image_tag product.image_url(:main_banner).to_s %>
</div>
<div class="span4" >
<div class="side-img"><%= image_tag product.image_url(:banner_thumb).to_s %></div>
</div>
最佳答案
ActiveRecord
结果是一个数组,所以可以使用sample等数组方法或 shuffle .
您可以将局部变量传递给部分变量,例如从您的产品集合中随机选择的产品:
<%= render [...] locals => { :featured_product => @products.sample } %>
主页#_featured
<div class="span8 featured">
<%= image_tag featured_product.image_url(:main_banner).to_s %>
</div>
或者您可以随机循环浏览集合:
<%= render [...] :collection => @products.shuffle [...] %>
关于ruby-on-rails - 我如何旋转一个集合,导致布局改变动态显示的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13394690/