9

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

\アプリ\モデル\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>"
    }

\app\admin\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

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

4

1 に答える 1