0

画像を保存するためにペーパークリップを使用しています。すべてが正常に機能し、@item.image.urlを使用してアイテムのURLにアクセスできます。

class Item
 has_attached_file :image, :styles => {
      :original => ['1920x1680>', :jpg],
      :small => ['100x100>', :jpg],
      :medium => ['250x250>', :jpg],
      :large => ['500x500>', :jpg]
    }
end

これはコンソールです:

> Item.last.image.url(:small)
=> "/system/images/items/1/small/chanel.jpg?1334005208" 

サーバーからHAMLまたはERBをテンプレート化し、このようにユーザーにページを提供する場合、これは簡単で簡単です。items / show.html.haml:

.item
  .item-image
    = image_tag @item.image.url(:small)

ただし、backbone.jsでは、コンテキストにペーパークリップヘルパーがないため、URLを作成できません。基本的に、画像の次の属性をjson形式でページに送信しています。

#<Item:0x007fc97559b960> {
                    :id => 1,
    :image_content_type => "image/jpeg",
       :image_file_name => "chanel.jpg",
       :image_file_size => 28880,
      :image_updated_at => 2012-04-09 21:00:08 UTC
}

アイテムの属性としてimage.urlを含めるための忍者の方法は何ですか。スタイルURLをどのように説明しますか?「image_small_url」、「image_normal_url」などの属性が事前に決定され、アクセス可能であると便利です。考え?

4

3 に答える 3

9

Jbuilderを使用して、作業中のプロジェクトのJSONビューを構築しているので、たとえば、私のindexビューは次のようになります。

json.array!(@things) do |json, thing|
  json.id thing.id
  json.name thing.name
  json.description thing.description
  json.image_url thing.image.url
  json.thumb_url thing.image.url(:thumb)
end

そのように私のバックボーンテンプレートでは、私はただ言うことができthing.get('image_url')ますthing.get('thumb_url')

簡単に言うと、Jbuilderのようなものを使用するかas_json、モデルを手動でオーバーライドする必要があります。個人的には、ビューレベルでこれを処理するのが好きです。これは、Jbuilderで簡単に実行できることです。

于 2012-04-09T23:43:57.137 に答える
0

jbuilderを使用した別の簡単な例:

# index.json.jbuilder
json.array!(@shared_snap_casts) do |shared_snap_cast|
  json.extract! shared_snap_cast, :id, :snap
end

ここに:snapクリップの添付ファイルがあります。この例の出力は次のとおりです。

[{"id":1,"snap":"/system/shared_snap_casts/snaps/000/000/001/original/some_icon.png?1388093936"}]

お役に立てれば!

于 2013-12-26T21:47:08.410 に答える