多态关联语法中的蜻蜓图像?
Dragonfly images in a polymorphic association syntax?
我有图片模型:
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
我按照此处的说明设置了 dragonfly,当我只有一个具有图像属性的模型时它就可以工作,但现在我想制作其他模型可以使用的自己的图片模型 have_many 然后它停止了工作:http://markevans.github.io/dragonfly/rails/
在我的 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_accessor :image
在我们的图片模型上。但不确定如何实际引用它。感谢任何帮助。
您正在尝试调用图片列表中的属性。
您需要逐一检查或调用第一张图片:
<% teacher.pictures.each do |pic| %>
<%= image_tag pic.image %>
<% end %>
或...
image_tag( teacher.pictures.first.image ) if teacher.pictures.any?
希望对您有所帮助
编辑(回应您在下方的评论)
在您的 Teacher 模型中,您可以定义 return 第一张图片的方法:
def first_picture_image
self.pictures.first.try(:image)
end
如果老师没有与之关联的图片,上述方法将return nil
。
我有图片模型:
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
我按照此处的说明设置了 dragonfly,当我只有一个具有图像属性的模型时它就可以工作,但现在我想制作其他模型可以使用的自己的图片模型 have_many 然后它停止了工作:http://markevans.github.io/dragonfly/rails/
在我的 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_accessor :image
在我们的图片模型上。但不确定如何实际引用它。感谢任何帮助。
您正在尝试调用图片列表中的属性。
您需要逐一检查或调用第一张图片:
<% teacher.pictures.each do |pic| %>
<%= image_tag pic.image %>
<% end %>
或...
image_tag( teacher.pictures.first.image ) if teacher.pictures.any?
希望对您有所帮助
编辑(回应您在下方的评论)
在您的 Teacher 模型中,您可以定义 return 第一张图片的方法:
def first_picture_image
self.pictures.first.try(:image)
end
如果老师没有与之关联的图片,上述方法将return nil
。