0

作成しているアプリのAPIを作成しようとしていますが、ペーパークリップジェムを使用して画像を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

これは私に画像名を与えるだけで、画像への完全なURLは与えません。のlove.png代わりにhttp://s3.amazonaws.com/myapp-dev/icons/images/000/000/001/original/love.png?1342586714

完全なURLを取得するにはどうすればよいですか?私が見ることができるアイコンモデルのどのフィールドにも保存されていませんか?

- - 編集 - -

返されたレコードの1つが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) }

そのようにするには、クイズ モデルで定義された icon_url が必要です。

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