3

标题很别扭,但这就是我想做的。

假设我有 4 张图片。每个图像都有两种文件大小 ( 770 x 350&& 370 X 110) -与此类似

我想要做的是循环浏览一组@products(每个product都有一个具有多种尺寸的图像),以便770 image在每个页面加载时都不同。

即我想给所有产品 1/4 的机会出现在我视图的 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

我很想尽可能地干——我试着用 1 个部分来做,但这变得很乱,而且不像我希望的那样工作。

让我知道是否应该添加任何说明。

对于它的价值,这就是我正在尝试的:

首页#index

<%= render :partial => 'home/featured', :collection => @products, :as => :product %>            

首页#_精选

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

1 回答 1

4

ActiveRecordresults 是一个数组,因此您可以使用数组方法,例如sampleshuffle

您可以将 locals 传递给部分,例如从您的产品集合中随机选择的产品:

<%= render [...] locals => { :featured_product => @products.sample } %>    

首页#_精选

<div class="span8 featured">
  <%= image_tag featured_product.image_url(:main_banner).to_s %>
</div>

或者您可以随机循环浏览集合:

<%= render [...] :collection => @products.shuffle [...] %>
于 2012-11-15T10:42:56.017 回答