2012-07-22 36 views
0

我正在嘗試爲我正在製作的應用創建一個API,並且正在使用回形針創建上傳圖片到S3。從回形針獲取完整圖片url

所有在管理方面的事情都很好,但對於API我想盡可能有效地返回結果加入回形針圖片網址到每個測驗。

我有一個圖標模型(這顯然是使用回形針的地方)和一個測驗模型。測驗屬於圖標。

這裏是我的API方法返回所有公佈的競猜

def quizzes 
    @quizzes = Quiz.published.joins('INNER JOIN icons ON icons.id = quizzes.icon_id').select('icons.image_file_name, quizzes.updated_at, quizzes.description, quizzes.id, quizzes.title') 

    respond_to do |format| 
     format.json { render :json => @quizzes } 
     format.xml { render :xml => @quizzes } 
    end 
end 

這只是給我的形象名稱,而不是完整的URL到圖像如。只有love.png而不是http://s3.amazonaws.com/myapp-dev/icons/images/000/000/001/original/love.png?1342586714

如何獲得完整的網址?它不存儲在我可以看到的圖標模型的任何字段中?

---編輯---

這裏是返回的記錄,一個看起來像XML

<quiz> 
    <description>Voluptatem inventore voluptatibus provident et officia. Consequatur voluptate alias. Laboriosam sit et. Non ea aut doloremque odit officiis. Unde mollitia asperiores omnis eaque at.</description> 
    <id type="integer">5</id> 
    <image-file-name type="NilClass">love.png</image-file-name> 
    <title>Corrupti ea qui veniam et praesentium.</title> 
    <updated-at type="datetime">2012-07-21T23:26:48Z</updated-at> 
</quiz> 

謝謝!

+0

嘗試' @ quizzes.first.icon.picture_from_url'; 'picture_from_url'是回形針提供的輔助方法。 – bdares 2012-07-22 00:45:52

+0

我可以看到,做@ quizzes.first.icon.image將正確和完整的url返回給圖像,但是我怎樣才能將這個注入到返回的每個測驗的結果中呢? – markstewie 2012-07-22 00:51:14

+0

我不認爲你需要 - 助手方法只是從文件名和它所連接的模型的ID來計算它。 – bdares 2012-07-22 00:59:34

回答

1

我想你可以顯式調用額外的模型方法的轉化率作爲參數:

format.json { render @quizzes.to_json(:methods => :icon_url) } 
format.xml { render @quizzes.to_xml(:methods => :icon_url) } 

你需要在你的測驗模型,這樣做的定義icon_url:

def icon_url 
    icon.url 
end 
+0

這樣做,我確實得到每個測驗對象的圖標-URL ...但它輸出整個圖標對象作爲YAML?而且我還沒有看到主要的網址。 – markstewie 2012-07-22 05:44:53

+0

檢查編輯的答案 - 我認爲這是返回url的方法,你也可以嘗試'icon.picture_from_url' – 2012-07-22 17:00:16

+0

最後一個代碼塊的更清晰版本恕我直言:'代表:url,to::圖標,前綴:true' – KonstantinK 2014-03-20 07:46:33