Ruby on rails 发布JSON时,参数哈希为空
我正在使用脚手架的默认创建方法:Ruby on rails 发布JSON时,参数哈希为空,ruby-on-rails,ruby,json,params,Ruby On Rails,Ruby,Json,Params,我正在使用脚手架的默认创建方法: def create @user = User.new(firstname: params[:firstname], surname: params[:surname]) respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User was successfully created.' } fo
def create
@user = User.new(firstname: params[:firstname], surname: params[:surname])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
我知道我没有在那里使用强参数,但不管怎样:
当我使用非常特定的REST客户端发送POST请求时,params散列不包含参数。当我查看request.body时,它包含JSON形式的参数。此外,内容类型是application/json
为了解决这个问题,我不得不
before_filter :fix_json_params
[...]
def fix_json_params
if request.content_type == "application/json"
@reparsed_params = JSON.parse(request.body.string).with_indifferent_access
end
end
private
def params
@reparsed_params || super
end
然而,我不明白为什么??如果内容类型正确,为什么rails不能正确解析我的json正文?有什么想法吗
这是在使用rails“4.2.4”。您需要配置params_warrper.rb: 在控制器顶部放置:
wrap_parameters format: [:json]
然后它会自动将其解析为JSON。您好,谢谢您的帮助。参数哈希仍然为空:/。