2009-09-04 36 views

Trả lời

7

Chắc chắn điều đó là có thể, here Bạn có một hướng dẫn và một vài liên kết đến các plugin.

19

Nếu bạn đang sử dụng Rails 3, tôi đã viết một plugin làm cho tệp kiểu AJAX tải lên tương đối tầm thường để triển khai.

http://rubygems.org/gems/remotipart

+0

Khá tuyệt vời - bạn có biết bất kỳ giải pháp mẫu tương tự nào không? Đây thực sự là công cụ hữu ích. –

+0

Tôi không biết về bất kỳ giải pháp kiểu Prototype nào nhưng mã jQuery quá tầm thường để triển khai thực hiện, tôi không thể tưởng tượng nó sẽ khó sửa đổi. Nếu bạn muốn giúp đỡ, cảm thấy tự do để ngã ba Remotipart trên github và tôi sẽ hợp nhất nó vào thân cây. http://github.com/formasfunction/remotipart – leppert

+0

Lưu ý cho những người đọc bài đăng này: remotipart có các lỗi quan trọng (chẳng hạn như: không hoạt động với nhiều cấp văn bản được trích dẫn, được biết từ 2 năm) và chủ sở hữu repo không chủ động cố gắng sửa lỗi này. Vì vậy, hãy xem xét điều này trước khi bạn lãng phí giờ (như tôi đã làm) thực hiện nó sau đó thay thế nó bằng một giải pháp khác. – Benj

0

Nó không thực sự cần thiết để sử dụng một số plugin đặc biệt cho điều đó. Cách dễ nhất để tải ảnh ajax cho tôi chỉ là tạo biểu mẫu tải ảnh lên để hoạt động như ajax. Tôi sử dụng plugin ajaxForm jQuery: http://www.malsup.com/jquery/form/ Trả lại ảnh đã tải lên js và đưa nó vào trang của bạn.

Vì vậy, bạn nên thực hiện hình thức của bạn được ajaxForm:

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

khiển trông giống như rằng:

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 

và trong ajaxFormSuccessHandler bạn chỉ cần lấy đối tượng hình ảnh:

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

và đặt ảnh bất cứ nơi nào bạn muốn:

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

P.S: Không thực sự biết tại sao nhưng nếu bạn quay lại xử lý ajaxForm, nó xử lý yêu cầu đó là L ERI không THÀNH CÔNG.

P.P.S: chắc chắn jQuery-File-Upload plugin làm cho nhiều hơn nhưng nếu bạn không cần tất cả những điều đó, bạn có thể sử dụng theo cách này.

P.P.P.S: bạn nên tải lên tệp không phải là ajax chức năng để làm điều đó =)