我正在使用Rails 3.2,我有一個表單,我希望它通過ajax發佈並讓控制器返回json。Rails 3遠程表單:如何指定內容類型?
我使用像這樣一個幫手的form_for:
= form_for(@object, :remote => true, :format => :json) do |f|
....
我的目標控制器創建方法是這樣的:
def create
respond_to do |format|
if @object.save
format.html { redirect_to @object }
format.json { render json: @object, status: :created, location: @object }
else
format.html { render action: "new" }
format.json { render json: @object.errors, status: :unprocessable_entity }
end
end
end
的形式ajaxly提交預期。但控制器正在返回html,而不是json!
用firebug檢查請求,並確信ajax請求上的Content-Type http頭正在設置爲application/html。
圍繞這個的文檔非常稀少::format =>:json似乎只是將「.json」附加到窗體動作,而不是實際修改任何http標頭。
我也試過:content_type =>:json無效。
我不能簡單地硬編碼控制器返回JSON,因爲有其他地方我不希望它返回的HTML ...
因此,沒有人知道如何使用時告訴控制器來呈現JSON的form_for?
感謝您的幫助
什麼URL和方法獲取表單標籤呈現在網頁上? – iltempo 2012-03-06 12:20:58
後,完整的標記是:
否json在這裏。你有沒有考慮使用request.xhr?區分ajax和普通請求而不是請求的格式? – iltempo 2012-03-06 12:32:57