此问题是前一个问题的后果(Return url from paperclip to json)。我总结它是为了更容易遵循,也因为这只是上述提到的一部分。我有一个CMS系统,它使用回形针进行多个图像上传。我的代码是
asset.rb
attr_accessible :asset_content_type, :asset_file_name, :asset_file_size, :asset_updated_at, :place_id, :asset
belongs_to :place
has_attached_file :asset
validates_attachment :asset, :presence => true,
:content_type => { :content_type => ['image/jpeg', 'image/png'] },
:size => { :in => 0..1.megabytes }
def asset_url
asset.url(:original)
end
place.rb
has_many :assets
accepts_nested_attributes_for :assets, :allow_destroy => true
def avatar_url
asset_url
end
places_controller
def overall_photos
@places = Place.all
render :json => @places.to_json(:methods => [:avatar_url])
end
我尝试访问时遇到的错误... places / overall_photos.json是{“status”:“500”,“error”:“未定义的局部变量或方法`asset_url'代表#\ u003CPlace:0x007f163b67d8a8 \ u003E“}所以看起来我无法通过关联模型place.rb访问asset.rb的实例方法。有人能指出我正确的方向吗?我甚至试图使asset_url成为一种类方法,但仍然没有运气。
答案 0 :(得分:0)
def avatar_url
assets.map(&:asset_url)
end
这可以根据你的评论给你你想要的东西
答案 1 :(得分:0)
如果您想要所有资产网址:
def asset_urls
self.assets.map {|a| a.asset_url }
end
但你可能只想要一个作为化身,所以我会使用
def avatar_url
self.assets.first.asset_url if self.assets.first #to avoid calling asset_url on Nil
end