簡體   English   中英

Ruby on Rails AJAX文件上傳

[英]Ruby on Rails AJAX file upload

有沒有簡單的方法如何處理Rails中的AJAX文件上傳? 例如,使用插件

如果您正在使用Rails 3,我編寫了一個插件,使AJAX樣式文件上傳相對簡單,無法實現。

http://rubygems.org/gems/remotipart

JQuery File Upload是一個非常活躍的多功能文件上傳小部件項目。

請參閱此處的演示: http//blueimp.github.com/jQuery-File-Upload/

這是一個寶石: http//rubygems.org/gems/jquery.fileupload-rails

維基也有Rails示例: https//github.com/blueimp/jQuery-File-Upload/wiki

實際上並沒有必要使用一些特殊的插件。 最簡單的方法是為我做ajax圖片上傳只是制作上傳圖片就像ajax一樣的表格。 為此,我使用ajaxForm jQuery插件: http//www.malsup.com/jquery/form/然后返回到js上傳的圖片並將其放到您的頁面。

所以,你應該讓你的表單成為ajaxForm:

$('#uploader').ajaxForm({dataType: "script",
         success: ajaxFormErrorHandler,
         error: ajaxFormSuccessHandler
}

控制器看起來像這樣:

  def add_photo
    @photo = PhotosMeasurement.new(params[:user_photo])
    respond_to do |format|
      if @photo.save
         format.json { render :json =>  @photo}
      else
         format.json { render :json =>  nil}
      end
    end
  end

在ajaxFormSuccessHandler中,您只需獲取圖片對象:

var photo = jQuery.parseJSON(responseText.responseText);

並將照片放在任何你喜歡的地方:

target.find('.addPhoto').before(''+
       '<input class="imageId" type="hidden" value='+photo.id+' > '+
       '<img src='+photo.photo.thumb.url+' alt="Thumb_1"> ');

PS:不知道為什么,但如果你回到ajaxForm處理程序的東西,它處理該請求為ERROR而不是SUCCESS。

PPS:肯定jQuery-File-Upload插件可以提供更多,但如果你不需要所有這些,你可以使用這種方式。

PPPS:你應該已經上傳了功能性非ajax文件=)

您可以使用Jquery表單

  • 下載jquery.form.min.js並將其放到vendor / assets / javascripts文件夾中
  • 在你的application.js

    // =需要jquery.form

  • 在您的視圖中(haml示例):

    = form_for user,authenticity_token:true,:multipart => true,id:'user_form'do | f |

    = f.label:avatar,t(“user.avatar”)

    = f.file_field:頭像,接受:'image / png,image / gif,image / jpeg'

    = f.submit t(user.new_record ??'add':'update'),class:'btn btn-primary',data:{disable_with:t(user.new_record??'adding':'updating')}

    :JavaScript的

    $( '#user_form')。給ajaxForm()

  • 這里是Rails應用程序示例https://github.com/serghei-topor/ajax-file-upload-rails-sample

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM