2015-11-05 50 views
0

我希望以前没有问过这个问题。 我有一个使用places模型的rails应用程序has_many pictures。图片有通过回形针附加的图像并上传到imgur。这允许我这样做:作为属性的Rails附件

@place.pictures.last.image.url 

这让我一个imgur链接到我的形象。

我的问题是,我想直接在对象中访问每个地方的图片的网址。这样的事情:

@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对象访问每个地方的图片。

+1

你能不能只是做:'picture_urls = @ place.pictures.map {| p | p.image.url}'? 这会给你所有的图片地址的数组:'@ place':'[imgur.com/link1,imgur.com/link2,imgur.com/link3]'这就是你正在寻找的。 –

+0

是的,但我希望能够访问该地点的图片,即使我用类似“@places = Place.where(标题:”测试标题“)的方式调用组中的所有图片” – daraul

+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