【问题标题】:Get full image url from paperclip从回形针获取完整的图片网址
【发布时间】:2012-07-20 18:26:32
【问题描述】:

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

谢谢!

【问题讨论】:

  • 试试@quizzes.first.icon.picture_from_url ; picture_from_url 是回形针提供的辅助方法。
  • 我可以看到,@quizzes.first.icon.image 会返回正确且完整的图像 URL,但是如何将其注入到返回的每个测验的结果中?
  • 我认为您不需要 - 辅助方法只是根据文件名和它所附加的模型的 ID 计算它。
  • 我明白了,但我在这里尝试渲染 xml 或 json,它无法访问辅助方法。我需要将它包含在@quizzes 数组中,以便以 xml 或 json 格式输出。

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


【解决方案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

【讨论】:

  • 这样做我确实为每个测验对象获得了一个图标网址......但它将整个图标对象输出为 yaml?仍然看不到我所追求的主要网址。
  • 检查编辑后的答案——我认为这是返回url的方法,你也可以试试icon.picture_from_url
  • 最后一个代码块的更简洁版本恕我直言:delegate :url, to: :icon, prefix: true
猜你喜欢
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多