我正在Rails中开发一个API,并从另一个Rails应用程序与它进行交互。到目前为止,一切都正常工作,使用POST和GET来验证用户、创建记录和检索数据。但是现在我在获取PUT操作来更新记录时遇到了问题。它似乎正确地调用了API,并且API返回了200响应,但从日志来看,Rails甚至不像是在执行UPDATE语句。最奇怪的是没有错误或警告。
这是日志。(数据是伪造的数据,所以我不会费心去修改它)
Started PUT "/affiliates/17" for ::1 at 2019-04-26 17:42:51 -0400
Processing by AffiliatesController#update as HTML
Parameters: {"id"=>"17", "username"=>"teracole", "email"=>"dan@purdy.io", "first_name"=>"Max", "last_name"=>"Max", "company"=>"Dach LLC", "manager_id"=>"3"}
[1m[36mUser Load (0.3ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2[0m [["id", 2], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:12
[1m[36mAffiliate Load (0.2ms)[0m [1m[34mSELECT "affiliates".* FROM "affiliates" WHERE "affiliates"."id" = $1 LIMIT $2[0m [["id", 17], ["LIMIT", 1]]
↳ app/controllers/affiliates_controller.rb:50
[1m[35m (0.1ms)[0m [1m[35mBEGIN[0m
↳ app/controllers/affiliates_controller.rb:31
[1m[36mAffiliate Exists (0.3ms)[0m [1m[34mSELECT 1 AS one FROM "affiliates" WHERE "affiliates"."username" = $1 AND "affiliates"."id" != $2 LIMIT $3[0m [["username", "tera.cole"], ["id", 17], ["LIMIT", 1]]
↳ app/controllers/affiliates_controller.rb:31
[1m[35m (0.1ms)[0m [1m[35mCOMMIT[0m
↳ app/controllers/affiliates_controller.rb:31
Completed 200 OK in 8ms (Views: 0.9ms | ActiveRecord: 1.0ms)您可以在日志中看到参数数据。控制器的动作非常简单:
# PATCH/PUT /affiliates/1
def update
if @affiliate.update(affiliate_params)
render json: @affiliate
else
render json: @affiliate.errors, status: :unprocessable_entity
end
end提前感谢您的帮助。
发布于 2019-04-28 00:51:27
事实证明,无论出于什么原因,put方法都要求我识别标头中的内容类型。Post没有这样做,但更改了我的HttParty调用中的行,解决了这个问题:
response = HTTParty.put(put_uri, body: @this_data.to_json, headers: { 'Content-Type' => 'application/json', 'Authorization' => @token })https://stackoverflow.com/questions/55875579
复制相似问题