2011-08-22 1 views
0

여기에 이상한 문제가 있습니다. 속성을 잘못 전송했거나 Rails 끝 부분에서 잘못된 작업을하고 있습니다. 사물의 Javascript/jQuery 측면에서 레일즈 측면보다 잘못을 수행하는 것이 더 많아서 가능성이 더 커 보인다.매개 변수를 받지만 모델의 속성을 업데이트하지 않습니다.

어쨌든 여기에 관련 코드가 있습니다. 내 질문은이 게시물의 맨 아래에 있습니다. 상기 console.log() 함수의 출력이 호출되고

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]), 
    }); 
} 

감사관 방법

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 

자바 스크립트 함수 (jQuery를로드한다)

{"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)" 

은 어떻게 saveAnswer 함수에서 입력을 사용하여 지정된 Answer 모델의 속성을 업데이트 할 레일을받을 수 있나요?

답변

1

JSON 요청의 데이터 필드에 루트 요소가 누락되었습니다. 다음과 같아야합니다 :

+0

나는 params 메소드가 작동하는데 하나가 필요하다는 것을 몰랐습니다. –