我正在使用 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: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>]
不仅仅是网址..
更新(工作解决方案!)
这是我的最终工作代码:
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
问题是每张照片都有一个新行..我可以将它们全部放在同一行吗?
最佳答案
乍一看,有两件事看起来不太好:
@photos = 产品.照片
。为什么是@
?这不像您在其他地方需要该实例变量,并且您可能会无意中与 ActiveAdmin 在幕后生成的内容发生冲突。因此,请谨慎行事,将其设为局部变量。最简单的方法:丢失@
。image_tag(p.photo)
应变为image_tag(p.photo.url)
。
更正这两个错误,并告诉我们它是否已修复,如果没有,新的错误是什么。
希望这有帮助。
关于ruby-on-rails - #<Array :> in ActiveAdmin row 的未定义方法 `name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12124941/