gpt4 book ai didi

ruby-on-rails - Rails 3 远程表单 : How do I specify the content type?

转载 作者:行者123 更新时间:2023-12-03 07:49:29 24 4
gpt4 key购买 nike

我正在使用 Rails 3.2,我有一个表单,我希望它通过 ajax 发布并让 Controller 返回 json。

我正在使用 form_for 助手,如下所示:

= form_for(@object, :remote => true, :format => :json) do |f|
....

我的对象 Controller 创建方法如下所示:
  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。但是 Controller 返回的是 html,而不是 json!

使用 firebug 检查请求,果然 ajax 请求上的 Content-Type http header 被设置为 application/html。

围绕此的文档非常稀少, :format => :json 似乎只是将“.json”附加到表单操作中,实际上并未修改任何 http header 。

我也试过 :content_type => :json 没有效果。

我不能简单地对 Controller 进行硬编码以返回 json,因为在其他地方我确实希望它返回 html...

那么有谁知道在使用form_for时如何告诉 Controller 渲染json?

谢谢你的帮助

最佳答案

您可以设置内容类型: = form_for(@object, :remote => true, :html => {:'data-type' => 'json'})

rails.js 中所述第 106 行。

关于ruby-on-rails - Rails 3 远程表单 : How do I specify the content type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9583380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com