[英]Ruby on Rails AJAX file upload
有沒有簡單的方法如何處理Rails中的AJAX文件上傳? 例如,使用插件
如果您正在使用Rails 3,我編寫了一個插件,使AJAX樣式文件上傳相對簡單,無法實現。
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
在您的視圖中(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.