我正在尝试为我正在制作的应用制作API,并且我正在使用paperclip gem将图像上传到S3。
所有事情都在管理方面做得很好但是对于api我想尽可能有效地将结果返回到每个测验中的回形针图像网址。
我有一个Icon模型(这显然是使用回形针的地方)和测验模型。测验属于一个图标。
这是我的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
如何获取完整网址?它没有存储在我能看到的Icon模型的任何字段中?
---编辑---
以下是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 :(得分: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