2013-04-17 23 views
6

私はクリップを使って複数の画像をアップロードしています。私はActive Adminも使用しています。これまでは、複数の画像をアップロードして、それらを「製品」モデルに関連付けることができました。また、関連するすべての画像の「名前」をインデックスページに表示することもできます。しかし、私はどのようにディスプレイのすべての製品モデルの私のショーページの画像(だけではない)を見つけることができません。以下のコードを見つけてください。ActiveAdminで複数の画像を表示するには

\アプリ\モデル\ product.rb

has_many :images, :dependent => :destroy 
accepts_nested_attributes_for :images, :allow_destroy => true 

\アプリ\モデル\ image.rb

belongs_to :product 
has_attached_file :image, :styles => { 
    :thumb=> "100x100>", 
    :small => "300x300>", 
    :large => "600x600>" 
    } 

\アプリ\管理者\ products.rb

index do 
    column "Images" do |product| 
    product.images.map(&:image_file_name).join("<br />").html_safe 
    end 
end 

show do |product| 
    attributes_table do 
    row "Images" do 
     ul do 
     li do 
      image_tag(product.images.first.image.url(:small)) 
     end 
     li do 
      image_tag(product.images.second.image.url(:small)) 
     end 
     li do 
      image_tag(product.images.last.image.url(:small)) 
     end 
     end 
    end 
    end 
end 

I動作するものが見つかりましたが、これは本当に悪いプログラミングです。私は現在、各製品に3つの画像が関連付けられており、私はショーブロック内で上記のコードを使用しています。 これを行うより良い方法を提案してください。

+0

私はイメージが存在する場合にのみ表示するようにコードを変更しました。 !image.images.first.nil? 'ただし、このコードにはまだmaxという制限があります。 3枚の画像。より良い方法でこれを達成する方法についてアドバイスをしてください。 – ansh0809

+0

あなたは3つだけでなくそれぞれの画像を表示する必要があるということですか? – Fivell

答えて

12

3つの画像だけでなく、それぞれの画像を表示する必要がありますか?そうであれば

row "Images" do 
    ul do 
    product.images.each do |img| 
     li do 
     image_tag(img.image.url(:small)) 
     end 
    end 
    end 
end 
+0

ありがとうございます...これは動作します。しかし、最初の画像を小さく表示し、残りをサムとして表示する方法はありますか? – ansh0809

+0

はい、まず最初にオフセットオフセット(1)のスコープと使用サイクルを表示するイメージ – Fivell

関連する問題