[英]Completed 406 Not Acceptable in 773ms
我的客户端应用程序将JSON编码的POST发送到Rails服务器,但是服务器显示406错误,并且不响应json。
UsersController创建
# POST /users
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Rails控制台:
Started POST "/users.json" for 127.0.0.1 at 2013-05-21 16:38:47 +0100
Processing by Devise::RegistrationsController#create as JSON
Parameters: {"user"=>{"name"=>"", "available"=>"true", "email"=>"", "sex"=>"male", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}}
WARNING: Can't verify CSRF token authenticity
(0.2ms) begin transaction
User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = '' LIMIT 1
(0.2ms) rollback transaction
Completed 406 Not Acceptable in 773ms (ActiveRecord: 6.1ms)
谁能帮我?
稍后再尝试回答此问题,以防万一有人看到它。 即使在我的控制器底部只有JSON作为格式选项时,我也不断遇到这个问题(例如您的示例中的示例):
respond_to do |format|
format.json { render json: @user, status: :created, location: @user }
end
即使在我的请求上使用$.getJSON
显式调用它时,也确实使用JSON数据类型调用它。
我发现的技巧是在页面名称上使用.json进行调用。
$.getJSON('controllername-your-calling.json?', function(json){
//do your stuff...
});
也许它可以帮助某人。
您只需要在控制器的顶部添加respond_to :json, only: [:create]
。 您可能需要为使用respond_to :html
的操作添加respond_to :html
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.