我正在使用AJAX而不是http來提交表單。 這是形式:Rails 3使用http而不是AJAX提交圖片上傳表單
<%= form_for(:image, :remote => true, :url => {:controller=> 'questions',:action => 'upload'},:multipart => true) do |f| %>
<%= f.file_field :image, :onchange => "$(this).parents('form').submit();" %>
<% end %>
上方並與onchange
事件提交表單我已經設置了:remote => true
選項。我有下面的代碼在控制器:
def upload
if request.xhr?
@image = Image.new(params[:image])
@image.save
respond_to do |format|
format.js { render :layout=>false }
end
else
render :text => 'Request Wasnt AJAX'
end
end
我的動作呈現文本每次,請求似乎並不爲AJAX風格,儘管遠程標記被設置(正確顯示,即使在最終的HTML)。我無法弄清楚我的錯在哪裏。我已經在FF和Chrome的最新瀏覽器版本中進行了測試,所以我不認爲這是瀏覽器問題。有任何想法嗎 ?
更新:我做了一些更多的調試嘗試。問題在於文件字段,如果我用文本字段替換文件字段,則請求是AJAX(其他所有內容保持相同)。但是對於文件字段,它總是發送一個非AJAX請求。
注意:總體目標是通過AJAX請求上傳圖片,響應不渲染任何內容,不顯示HTML,不重定向,不重新加載頁面。
你的application.js或其他包含的JS文件中是否都有//// = require jquery'和'// = require jquery_ujs'? – mccannf 2013-05-08 09:19:57
嘿,是的。我做了更多的測試。問題在於文件字段,如果我用文本字段替換文件字段,則請求是AJAX(其他所有內容保持相同)。但是對於文件字段,它總是發送一個非AJAX請求。 – Superq 2013-05-08 09:35:02