3

タイトルはとてもぎこちないですが、これが私がやりたいことです。

4つの画像があるとします。各画像には2つのファイルサイズ(770 x 350&& 370 X 110)があります-これに似ています。

私がやりたいのは、ページの読み込みごとに異なるように、コレクション@products(それぞれproductに複数のサイズの1つの画像があります)を循環させることです。770 image

つまり、すべての製品に、ビューの770スロットに表示される1/4の機会を与えたいのですが、手動で変更する必要はありません(たとえばproduct、特別な「機能」フラグを1つ与えることによって)。

だから私は4つの製品のコレクションを持っています。それぞれに2つの異なるサイズの2つの画像があります。カルーセルのように、ページをリロードするたびにページ上の画像のレイアウトを変更したい。

image_tag私が使用したい2つのステートメントは次のとおりであると想定します。

<%= image_tag product.image_url(:main_banner).to_s %>

<%= image_tag product.image_url(:banner_thumb).to_s %>

productコレクションを循環するイテレータのインスタンスはどこにありますか@products

できるだけドライにしたいと思います。1つのパーシャルで試してみましたが、面倒になり、思ったように機能しなくなりました。

説明を追加する必要があるかどうかを教えてください。

それが価値があるもののために、これは私が試みていることです:

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

1 に答える 1

4

ActiveRecord結果は配列であるため、 sampleshuffleなどの配列メソッドを使用できます。

商品コレクションからランダムに選択された商品など、地元の人をパーシャルに渡すことができます。

<%= 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 [...] %>
于 2012-11-15T10:42:56.017 に答える