我有一個Ruby on Rails服務器應用程序(託管在Heroku上),它應該能夠接收帶有JSON字符串的HTTP POST請求並將JSON對象添加到數據庫。有兩種數據庫模型:感恩節和請求。將json請求發佈到Ruby on Rails服務器應用程序 - 500錯誤
控制器/ request_controller.rb:
class RequestsController < ApplicationController
[...]
# POST /requests
# POST /requests.json
def create
@request = Request.new(params[:request])
respond_to do |format|
if @request.save
format.html { redirect_to @request, notice: 'Request was successfully created.' }
format.json { render json: @request, status: :created, location: @request }
else
format.html { render action: "new" }
format.json { render json: @request.errors, status: :unprocessable_entity }
end
end
end
[...]
end
對於不同的數據庫模型中的JSON鍵對象值應爲「感謝」和「請求」爲感恩節DB模型和請求DB模型分別。
模型/ request.rb:
class Request < ActiveRecord::Base
attr_accessible :request
end
模型/ thankgiving.rb:
class Thanksgiving < ActiveRecord::Base
attr_accessible :thanks
end
當我發佈一個HTTP請求http://YADA.herokuapp.com/thanksgivings.json一切正常,但是當我把它.. ./requests.json,我得到一個500錯誤。如果我在JSON字符串中使用錯誤的鍵,則請求成功,但該值爲空。
請求1:(正確的請求到thanksgiving.json)
POST
主機:http://YADA.herokuapp.com/thanksgivings.json
內容類型:應用/ JSON
體:{ 「謝謝」: 「QWERTY」}
請求2:(正確的請求到request.json - 返回500)
POST
主機:http://YADA.herokuapp.com/requests.json
內容類型:應用/ JSON
體:{「請求」:「QWERTY」}
請求3:(故障鍵 - 將成功:值將是零,關鍵是「請求」響應,數據庫元素將被添加)
POST
主機:http://YADA.herokuapp.com/requests.json
內容類型:應用/ JSON
體:{ 「ABC」: 「QWERTY」}
奇怪的是,這兩個控制器,thanksgivings_controller.rb和requests_controller.rb,是「相同的「但他們的行爲有所不同。
任何人都知道如何成功地做到這一點?
從這些請求發佈服務器日誌 - 我敢打賭,只是看着他們會給你一個很好的想法,爲什麼發生這種情況。 – Veraticus