我正在使用Rails 3.2,我有一个表单,希望通过ajax方式提交并让控制器返回json。
我正在使用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
表单按预期以ajax方式提交。但控制器返回的是HTML格式,而不是JSON格式!通过Firebug检查请求,确认ajax请求上的Content-Type HTTP头被设置为application/html。
关于此问题的文档相当匮乏,使用:format => :json似乎仅仅将“.json”附加到表单操作中,并未实际修改任何HTTP头。
我也尝试了:content_type => :json,但没有效果。
我不能简单地硬编码控制器以返回JSON格式,因为在其他地方我确实需要它返回HTML格式...
那么,有谁知道如何告诉控制器在使用form_for时呈现JSON格式?
感谢任何帮助