2

ActiveAdminを使用しています。これが私のショーページです。

show do |product|
  attributes_table do
    row :name
    row :photos do
      @photos = product.photos
      @photos.each do |p|
        image_tag(p.photo)
      end
    end
  end
  active_admin_comments
end

このエラーが発生します:undefined method name' for #<Array:>

それはこの行にあります:

@photos = product.photos

なぜそしてどのように?写真にもありませんname

アップデート

たとえば、製品の最初の写真など、1枚の写真を選択すると機能します。本当に変だ。

アップデート

WEBRICKをリセットするだけでした...しかし今、私は新しい問題に遭遇します。私の写真はURLがphoto:stringであり、上記のコードを使用すると次のように出力されます。

[#<Photo id: 1, created_at: "2012-08-31 20:34:15", updated_at: "2012-08-31 20:34:15", photo: "innoMicro.jpg", product_id: 3>]

そして、URLだけではありません。

更新(実用的なソリューション!)

これが私の最終的な動作コードです:

  show do |product|
    attributes_table do
      row :name
      row :description
      product.photos.each do |p|
        row :photo do
          image_tag(p.photo, :height => '256', :width => '256')
        end
      end
    end
    active_admin_comments
  end

問題は、各写真に新しい行があることです。すべてを同じ行に保持できますか?

4

2 に答える 2

3

一見すると、2 つの点が見栄えがよくありません。

  1. @photos = product.photos. なぜ@ですか?そのインスタンス変数が他の場所で必要になるわけではなく、ActiveAdmin がカーテンの後ろで生成したものと不注意に衝突する可能性があります。したがって、安全にプレイして、ローカル変数にしてください。それを行う最も簡単な方法: @.

  2. image_tag(p.photo)になるはずimage_tag(p.photo.url)です。

これら 2 つを修正し、修正されているかどうか、修正されていない場合は新しいエラーをお知らせください。

お役に立てれば。

于 2012-09-01T02:37:59.247 に答える
2

これがタイプミスなのか本当のエラーなのかはわかりませんが、あなたが書いた

product.images.all do |image|
    row :image do
        image_tag(image.image)
    end
end

通常は image_tag(image.url) を使用する必要があります

これがあなたの答えであることを願っています

于 2012-08-31T13:34:27.243 に答える