コンテキスト - 私はレールを学習するためのクイズアプリを作成しています。特定のビューには、質問とラジオボタンのリストが表示されます。ユーザーは各質問に対してオプションを選択し、[送信]ボタンをクリックする必要があります。 SubmitボタンはAJAXコールを呼び出し、コントローラを呼び出します。クエリはRailsコンソールのレコードを返しますが、内部サーバエラー5003の結果を返します
号 - コントローラでは、クエリは7MSで500内部サーバーエラー(ActiveRecordの:0.2msのを)完了
を返し
しかし、私はRailsのコンソールで同じクエリを実行し、私は適切な結果を得る。
ログ出力 -
質問ロード(0.2msの) "の質問に" SELECT * "質問" "質問" "ID" = FROM。。? LIMIT 1 [[ "ID"、29]] 7MSで
完了500内部サーバーエラー(ActiveRecordの:0.2msの)
Railsのコンソール出力 -
質問ロード(0.6ms) SELECT "質問"。* FROM "質問" WHERE "質問"。 "ID" =? LIMIT 1 [ "ID"、29]] =># IRB(メイン):017:0>
モデル
class Question < ActiveRecord::Base
belongs_to :title
end
表スキーマ
create_table "questions", force: :cascade do |t|
t.string "question"
t.string "option1"
t.string "option2"
t.string "option3"
t.string "option4"
t.string "answer"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "title_id"
end
コントローラ
def check_answers
answers = params[:answers]
@response = []
my_hash = {}
answers.each_key do |key|
question_id = answers[key]['question_id']
user_answer = answers[key]['user_answer']
correct_answer = Question.find_by id: question_id
correct_answer_jk = correct_answer[0]['answer']
my_hash['question_id'] = question_id
my_hash['user_answer'] = user_answer
if user_answer == correct_answer_jk
my_hash['response'] = 'Correct'
my_hash['correct_answer'] = ''
else
my_hash['response'] = 'Incorrect'
my_hash['correct_asnwer'] = correct_answer_jk
end
@response.push(my_hash)
end
respond_to do |format|
format.js
format.html
end
end
私は問題を捜したが、私は問題を解決するための指針を得ていない。私はSqliteを使用していることに注意してください。
EDITEDは development.log
は 「/ questions_controller/check_answersをGET開始しましたか?回答%5B0%5D%5Bquestion_id%5D = 29 &回答%5B0%5D%5Buser_answer%5D = B &回答%5B1%5D%5Bquestion_id%5D = 30 &回答%5B1%5D%5Buser_answer%5D = A &回答% 5B2%5D%で5D = 31の&アンサー%5B2%の5D%5Buser_answer%5D = D &回答%5B3%5D%の5Bquestion_id%5D = 32の&アンサー%5B3%の5D%5Buser_answer%5D = C &アンサー%5B4%5Bquestion_id% 5D%5Bquestion_id%5D = 33 &回答%5B4%5D%5Buser_answer%5D = B &回答%5B5%5D%5Bquestion_id%5D = 34 &回答%5B5%5D%5Buser_answer%5D = A &回答%5B6%5D% 5Bquestion_id%5D = 35 回答%5B6%5D%5Buser_answer%5D = B ":: 1:2016-09-18 01:03:15 +0530処理:{0} => {"question_id" = "29"、 "user_answer" => "B"}、 "1" => {0} "question_id" => "31"、 "user_answer" => "D"}、 "3" => "question_id" => "30"、 "user_answer" => "A" > "question_id" => "32"、 "user_answer" => "C"}、 "4" => {"question_id" => "33"、 "user_answer" => "B"}、 "5 "question_id" => "35"、 "user_answer" => "B"}}} "=" {question_id "=>" 34 "、" user_answer "=>" A "}、 " 6 ""1" => {"question_id" => "30"、 "user_answer" = " => "A"}、 "2" => {"question_id" => "31"、 "user_answer" => "D"}、"question_id" => "33"、 "user_answer" => "B" }、 "question_id" => "34"、 "user_answer" => "A"}、 "5" => {"question_id" => "35"、 "user_answer" => B "}}キーは0です
[1m [36mQuest Load(35.2ms)[0m [1mSELECT" questions "。* FROM "質問 "WHERE"質問 "。 LIMIT 1 [0メートル[[ "ID"、43ms(ActiveRecordの:35.2ms)29] 完成品500内部サーバーエラーNameError(check_answers' アプリ/コントローラ/ questions_controllerにおける未定義のローカル変数または方法
correct_answer_rels' for #<QuestionsController:0x007ff3d50dd3a8>):
ブロック。 RB:21:
app/controllers/questions_controller.rb:27:ineach_key'
check_answers'
app/controllers/questions_controller.rb:21:inレンダリング /Users/tusharsaurabh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/でミドルウェア/テンプレート/レスキュー/ _source.erb (3.7ms)レンダリング /Users/tusharsaurabh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.4/lib/アクション_ディスパッチ/ミドルウェア/テンプレート/レスキュー/ _tra ce.text.erb(0.8ms)レンダリング /Users/tusharsaurabh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates /rescues/_request_and_response.text.erb (2.1ms)レンダリング /Users/tusharsaurabh/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.4/lib/action_dispatch /middleware/templates/rescues/diagnostics.text.erb (89.5ms)
テンプレート
check_answers.js.erb
<% @response.each do |my_hash| %>
<% if my_hash['response'] == 'Correct' %>
$('#<%=my_hash["question_id"]%>').css('background-color','green');
<%else%>
$('#<%=my_hash["question_id"]%>').css('background-color','red');
<%end%>
<%end%>
エラートレースまたは完全な開発ログを見てみましょう。この質問に答えるのに役立つだろう。 –