我希望以前没有问过这个问题。
我有一个带有places
模型的rails应用程序has_many pictures
。图片通过回形针附加图像并上传到imgur。这允许我这样做:
@place.pictures.last.image.url
这让我对我的形象有了一个微妙的联系。
我的问题是我想直接在对象中访问每个地方的图片网址。像这样:
@place = {
id => 1
title => "First Place"
picture_urls => [imgur.com/link1, imgur.com/link2, imgur.com/link3]
}
我不知道如何去做这件事。通过迁移?在我的模型文件中?我尝试在控制器中执行此操作:
@place.picture_urls = @place.pictures.each do |picture|
urls = []
urls.push picture.image.url
urls
end
但强参数不允许我在控制器中执行此操作。有帮助吗?
也许我应该进一步澄清:最终我想将@places传递给javascript将它们放在地图上,并且仍然能够从javascript对象访问每个地方的图片。
答案 0 :(得分:0)
在Place
模型中,定义picture_urls
方法:
# app/model/place.rb
def picture_urls
self.pictures.map { |p| p.image.url }
end
然后,在您的控制器中使用此方法:
def your_places
@places = Place.where(user_id: current_user.id)
temp_array = []
@places.each do |place|
temp_hash = {}
temp_hash['id'] = place.id
temp_hash['title'] = place.title
temp_hash['picture_urls'] = place.picture_urls # use `picture_urls` method here
temp_array << temp_hash
end
temp_array # this is the required data, array of place objects
end