从paperclip获取完整图像网址

时间:2012-07-22 00:40:49

标签: ruby-on-rails ruby-on-rails-3 paperclip

我正在尝试为我正在制作的应用制作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>

谢谢!

1 个答案:

答案 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