2011-08-03 171 views
0

我正在創建一個「新博客」表單,並且我在表單中有一些照片上傳字段。有沒有一種方法可以使用AJAX發送發佈請求,上傳照片並將照片網址返回到「新博客」表單中?我的後端用紅寶石寫在鐵軌上。AJAX請求與返回

我希望有道理!任何幫助非常感謝它!

謝謝, 亞歷克斯

回答

3

是的,但它是一個有點複雜。問題是你不能通過AJAX發送上傳的文件,但是有一個簡單的解決方法,大多數人使用。

這是如何工作的:您將照片上傳到不可見的iFrame中。您將此iframe設置爲上傳表單的目標,並且用戶可以在不重新加載頁面的情況下提交表單。

例子:

<iframe id="upload"></iframe> 
<%= form_for @photo, :html => { :multipart => true, :id => 'photo_upload_form', :target => 'upload' }, :url => photos_path do |f| %> 
    <div class="field"> 
    <%= f.label :image, 'Upload Photo' %> 
    <%= f.file_field :image %> 
    </div>  
<% end %> 

...當然使用CSS來隱藏iFrame的。我想,我曾經有一個問題與隱藏的iFrame與display: none,所以我會建議使用類似移動它關閉屏幕:

#upload { position: absolute; left: -10px; top: -10px; width: 1px; height: 1px; } 

最後,您可以在其中隱藏內部渲染視圖使用JavaScript iFrame通過window.parent,這樣你就可以在上傳表單中實際顯示上傳的圖片。

+0

啊有趣,我現在正在做類似的事情。只需將照片表單放入iframe中,然後當您提交照片時,幀會重定向到上傳的照片。 難道你不只是發回照片的網址?例如example.com/uploads/test.jpg ??? –

+0

當然有很多不同的方法來實現這一點,但我認爲最簡單的方法是隻使用一個完全隱藏的iFrame。無論您是在該iFrame視圖中編寫JS代碼,還是發送URL並在原始視圖中都有JS,這取決於您。 –

+0

太好了,謝謝,我會給它一個:) –