ActiveAdmin行中<#array:>的未定义方法`name'</array:>

时间:2012-08-25 19:21:57

标签: ruby-on-rails activeadmin

我正在使用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

问题是每张照片都有一个新行..我可以把它们全部放在同一行吗?

2 个答案:

答案 0 :(得分:3)

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

  1. @photos = product.photos。为什么@?这并不像你在其他地方需要那个实例变量,你可能会无意中与ActiveAdmin在幕后生成的东西发生冲突。所以要安全地玩,然后把它变成局部变量。最简单的方法:丢失@

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

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

    希望这有帮助。

答案 1 :(得分:2)

我不确定这是错字还是真正的错误,但你写了

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

通常你应该使用     IMAGE_TAG(image.url)

希望这是你的答案