我想通過JSON請求創建一個ActiveRecord對象。但是,控制器無法設置在新創建的對象中傳遞給參數的變量。舉個例子,一個person對象有兩個字段:firstname和lastname。由JSON.org庫的JSON.stringify函數生成Rails控制器不接受JSON?
的JSON生產:
{"firstname" : "Joe" , "lastname" : "Bloggs"}
然而控制器期望的JSON是在形式:
{ "Person" : {"firstname" : "Joe" , "lastname" : "Bloggs"} }
我知道在正常情況下(對於HTTP請求),請求的參數 嵌套在正在創建的模型 的類名下。
控制器中的創建操作是:
def create
@person = Person.new(params[:person])
respond_to do |format|
if @person.save
flash[:notice] = 'Person was successfully created.'
format.html { redirect_to(@person) }
format.xml { render :xml => @person, :status => :created, :location => @person }
format.json { render :json => @person, :status => :created, :location => @person }
else
format.html { render :action => "new" }
format.xml { render :xml => @person.errors, :status => :unprocessable_entity }
format.json { render :json => @person.errors, :status => :unprocessable_entity }
end
end
end
如產生什麼將是控制器來處理JSON 要求最巧妙的方法?或者,您是如何從Javascript對象生成「正確的」 JSON以傳遞給您的控制器?
TIA, 亞當
這仍然適用於標準的HTML請求,或者我應該重構JSON請求到一個單獨的方法? – apchester 2009-01-05 22:31:11
不需要。您應該重寫您的JSON請求以傳遞通過HTML傳遞的相同類型的參數。 – 2009-01-06 04:46:24