0

我正在尝试为我正在制作的应用程序制作一个 API,并且我正在使用回形针 gem 将图像上传到 S3。

在管理方面一切都很好,但是对于 api,我想尽可能有效地返回结果,将回形针图像 url 加入每个测验。

我有一个图标模型(这显然是使用回形针的地方)和一个测验模型。一个测验属于一个图标。

这是我返回所有已发布测验的 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

这只会给我图像名称,而不是图像的完整网址,例如。只是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>

谢谢!

4

1 回答 1

1

我认为您可以使用其他模型方法作为参数显式调用转换:

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

您需要在 Quiz 模型中定义的 icon_url 这样做:

def icon_url
  icon.url
end
于 2012-07-22T04:01:12.580 回答