我有一个图片模型:
class Picture < ActiveRecord::Base
belongs_to :imageable, polymorphic: true
dragonfly_accessor :image
end
然后我有两个不同的模型应该可以拍照:
class Teacher < User
has_many :pictures, as: :imageable
end
class Student < User
has_many :pictures, as: :imageable
end
我按照这里的指示来设置蜻蜓并让它工作时我只有一个带有图像属性的模型,但现在我想制作自己的图片模型,其他模型可以拥有它然后它停止工作:{{3} }
在我的rails控制台中,我可以执行以下操作:
teacher = Teacher.last
teacher.pictures
并返回一个空的活动记录代理:
#<ActiveRecord::Associations::CollectionProxy []>
但我不能这样做:
teacher = Teacher.last
teacher.image
teacher.picture.image
teacher.pictures.image
当我尝试在我的节目视图中显示时:
<%= image_tag @teacher.pictures.thumb('400x200#').url if @teacher.pictures_stored? %>
我得到了
undefined method `pictures_stored?'
即使我删除了if @scientist.pictures_stored?
我,也会收到此错误:undefined method thumb'
我尝试了不同的组合,因为dragonfly给了我们dragonfly_accessor :image
在我们的图片模型。但不确定如何实际引用它。任何帮助表示赞赏。
答案 0 :(得分:0)
您正尝试从图片列表中调用属性。
您需要浏览每张照片或拨打第一张照片:
<% teacher.pictures.each do |pic| %>
<%= image_tag pic.image %>
<% end %>
...或
image_tag( teacher.pictures.first.image ) if teacher.pictures.any?
希望这有帮助
编辑(回复下面的评论)
在您的教师模型中,您可以定义一个返回第一张图片的方法:
def first_picture_image
self.pictures.first.try(:image)
end
如果教师没有与之关联的图片,则上述方法将返回nil
。