首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主干+ Rails 'Paperclip‘异步上传

主干+ Rails 'Paperclip‘异步上传
EN

Stack Overflow用户
提问于 2012-10-27 12:58:28
回答 1查看 829关注 0票数 5

我正在使用主干实现异步照片上传& rails的‘回形针’创业板:

问题:

  1. 我需要使用jQuery上传(或等效的库)吗?
  2. 如果是这样的话,我是否只是覆盖photocollection.sync来调用库呢?

Item.rb

代码语言:javascript
复制
class Item < ActiveRecord::Base
   has_many: photos
   ...

Photo.rb

代码语言:javascript
复制
class Photo < ActiveRecord::Base

  attr_accessible :photo
  belongs_to :item

  has_attached_file :photo
...

ItemView.js.coffee

代码语言:javascript
复制
class MySite.Views.Items.Edit extends Backbone.View

  template: JST['items/edit']

  initialize: ->
    @modelBinder = new Backbone.ModelBinder
    @model.on('change', @render(), this)

  events: ->
    'submit #edit_item_form' : 'save_item'

  render: ->
    $(@el).html @template( item: @model )

    @new_photo = @model.new_photo()

    @modelBinder.bind @model, $("#item_fields")
    @modelBinder.bind @new_photo, $("#photo_fields")
    @

  save_item: (e) ->
    e.preventDefault()
    @model.save()
    @new_photo.save()

Edit.jst.eco

代码语言:javascript
复制
<form id="edit_item_form" accept-charset="UTF-8" data-remote="true" enctype="multipart/form-data">
<div id="item_fields"> .... </div>
<div id="photo_fields">
   <input type="file" id="upload_photo" name="photo[photo]" />
</div>
...

欢迎对整体设计改进的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 05:41:42

最后,我选择了iframe上传的简单性&跨浏览器支持。实际上,实现非常琐碎:

MyView.js.coffee:

代码语言:javascript
复制
  events: ->
    'change #upload_photos' : 'upload_photo'

  upload_photo: (e) ->
    upload_frame = $('#add_photo_form')
    upload_frame.prop 'target', 'upload_frame'
    upload_frame.submit()

MyTemplate.jst.eco:

代码语言:javascript
复制
<form id="add_photo_form" method="POST" action="/api/v1/photos" enctype="multipart/form-data">
  <div id="photo_fields">
      <input type="file" id="upload_photos" name="photo[photo]" multiple>
      <input type="hidden" name="authenticity_token" value="<%= $("meta[name='csrf-token']").attr("content") %>">
  </div>
</form>
<iframe id='upload_frame' name='upload_frame' src=''></iframe>

注意CSRF令牌的添加。如果没有它,请求将失败&请清除您的会话。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13100393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档