Backbone.js视图中的Paperclip image.url

And*_*hin 0 ruby-on-rails paperclip backbone.js ruby-on-rails-3 ruby-on-rails-3.1

我正在使用回形针来保存图像.一切正常,我可以使用@ item.image.url访问该项目的网址.

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

这是控制台:

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

如果我从服务器模板化HAML或ERB并像这样向用户提供页面,这是简单易行的.项目/ show.html.haml:

.item
  .item-image
    = image_tag @item.image.url(:small)
Run Code Online (Sandbox Code Playgroud)

但是,使用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
}
Run Code Online (Sandbox Code Playgroud)

什么是忍者的方式来将image.url作为项目的属性包含在内.我如何考虑样式URLS?有一个像"image_small_url","image_normal_url"等属性预定和可访问的将是很好的.思考?

cle*_*lem 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
Run Code Online (Sandbox Code Playgroud)

在我的Backbone模板中,我可以说thing.get('image_url')thing.get('thumb_url').

简而言之,您将需要使用类似Jbuilder的东西,或者as_json在模型中手动覆盖.就个人而言,我喜欢在视图级别处理这个问题,这是Jbuilder允许您轻松完成的任务.