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照片。

更新

当我选择一张照片时——例如产品的第一张照片——它可以工作!真的很奇怪。

更新

它只是重置WEBRICK ...但现在我遇到了一个新问题。我的照片包含的网址是照片:字符串,当我使用上面的代码时,它会打印:

[#<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>]

而不仅仅是网址..

更新(工作解决方案!)

这是我的最终和工作代码:

  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

乍一看,有两件事看起来不太好:

  1. @photos = product.photos. 为什么@?这不像您在其他任何地方都需要该实例变量,您可能会无意中与 ActiveAdmin 在幕后生成的东西发生冲突。因此,请谨慎行事,只需将其设为局部变量即可。最简单的方法:丢失@.

  2. image_tag(p.photo)应该变成image_tag(p.photo.url).

更正这两个并告诉我们它是否已修复,如果没有,新错误是什么。

希望这可以帮助。

于 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 回答