前提・実現したいこと
現在、一問一答アプリをrailsで作成しています。
”次の問題へ進む”というボタンを押すと、画面遷移せずに、
問題No、問題文、選択肢を変更したいと考えています。
そこでajaxを用いて実装中なのですが、
controllerに値を渡した後、
Javascript側への戻り値が想定通り出てこないです。
該当のソースコード
controller
1def index 2 if params[:count] == nil 3 @questions = Question.all 4 @questionsAmount = params[:questionsAmount] 5 @questions_samples = @questions.sample(@questionsAmount.to_i) 6 @count = 0 7 @answer = Correct.find_by(question_id:@questions_samples[0].id) 8 9 gon.count = @count 10 gon.questions_samples = @questions_samples 11 else 12 samples = params[:questions_samples] 13 count = params[:count] 14 questions = Question.all 15 sample_array = [] 16 17 samples.each {|key, value| 18 sample_id = value[:id] 19 sample_array << questions.find(sample_id) 20 } 21 22 @questions_samples = sample_array 23 @count = count.to_i 24 @answer = Correct.find_by(question_id:@questions_samples[@count]) 25 26 render json: @answer 27 28 29 30 end 31 32 33 end
Javascript
1$(function(){ 2 3 $(document).on('turbolinks:load', function(){ 4 $('#answer').click(function(){ 5 $('#answer-modal').fadeIn(); 6 }); 7 }); 8 9 $('#nextQuestion').click(function(){ 10 $('#answer-modal').fadeOut(); 11 gon.count += 1; 12 var num = gon.count + 1; 13 14 $.ajax({ 15 url: '/questions/index', 16 type: 'GET', 17 dataType: 'html', 18 async: true, 19 data: { 20 count: gon.count, 21 questions_samples :gon.questions_samples, 22 } 23 }).done(function(responce){ 24 $('#questionNo').html("No."+num); 25 $('#questionContents').html(gon.questions_samples[gon.count].contents); 26 $('#answer_a').html(responce.answer_a); 27 $('#answer_b').html(responce.answer_b); 28 }).fail(function(responce){ 29 console.log(responce); 30 }); 31 32 33 }); 34})
試したこと
controllerにて、renderでjavascriptへ返したのち、
javascriptでは、answer_aメソッド(選択肢aが格納されている)を用いて選択肢aを出力しようとした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー