0
我在這裏遇到一個奇怪的問題 - 我要麼發送錯誤的屬性,要麼我在Rails端做了錯誤的事情。看起來像JavaScript/jQuery方面的東西比Rails方面做得更多,所以更有可能。接收參數但不更新模型的屬性
無論如何,這裏是相關的代碼段。我的問題在這篇文章的最底部。
在控制器方法
def update
@answer = Answer.find(params[:id])
@answer.update_attributes(params[:answer])
puts @answer.inspect
respond_to do |format|
format.html { render :json => Answer.find(params[:id]) }
end
end
JavaScript函數(jQuery的加載)
function saveAnswer(question_number, answer_number)
{
console.log(JSON.stringify(window.questions[question_number].answers[answer_number]));
$.ajax(
{
type: 'POST',
url: "/answers/" + window.questions[question_number].answers[answer_number].id + "/update",
data: JSON.stringify(window.questions[question_number].answers[answer_number]),
});
}
上述console.log()
函數的輸出被稱爲:
{"content":"Latte.ASDASD!!!! Z","created_at":"2011-08-15T20:01:48Z","graded":true,"id":9,"problem_id":2,"turned_in":true,"updated_at":"2011-08-22T06:42:20Z","user_id":1,"score":5}
的WEBrick接收到該請求:
Started POST "/answers/9/update" for 127.0.0.1 at 2011-08-21 23:44:10 -0700
Processing by AnswerController#update as */*
Parameters: {"content"=>"Latte.ASDASD!!!!       Z", "created_at"=>"2011-08-15T20:01:48Z", "graded"=>"true", "id"=>"9", "problem_id"=>"2", "turned_in"=>"true", "updated_at"=>"2011-08-22T06:42
:20Z", "user_id"=>"1", "score"=>"5"}
←[1m←[36mAnswer Load (0.0ms)←[0m ←[1mSELECT "answers".* FROM "answers" WHERE "answers"."id" = ? LIMIT 1←[0m [["id", "9"]]
←[1m←[35mCACHE (0.0ms)←[0m SELECT "answers".* FROM "answers" WHERE "answers"."id" = ? LIMIT 1
Completed 200 OK in 16ms (Views: 4.9ms | ActiveRecord: 0.0ms)
模型的內容:
irb(main):007:0> Answer.inspect
=> "Answer(id: integer, problem_id: integer, user_id: integer, content: text, created_at: datetime, updated_at: datetime, turned_in: boolean, graded: boolean)"
如何讓Rails的更新使用從saveAnswer
功能的輸入指定Answer
模型的屬性?
我不知道需要一個工作的params方法,謝謝。 –