我正在使用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
问题是每张照片都有一个新行..我可以把它们全部放在同一行吗?
答案 0 :(得分:3)
乍一看,有两件事看起来不太好:
@photos = product.photos
。为什么@
?这并不像你在其他地方需要那个实例变量,你可能会无意中与ActiveAdmin在幕后生成的东西发生冲突。所以要安全地玩,然后把它变成局部变量。最简单的方法:丢失@
。
image_tag(p.photo)
应该成为image_tag(p.photo.url)
。
纠正这两个并告诉我们它是否已修复,如果没有,那么新错误是什么。
希望这有帮助。
答案 1 :(得分:2)
我不确定这是错字还是真正的错误,但你写了
product.images.all do |image|
row :image do
image_tag(image.image)
end
end
通常你应该使用 IMAGE_TAG(image.url)
希望这是你的答案