2016-07-14 8 views
0

これはかなりばかげた質問に思えるかもしれませんが、私は現時点でアイデアがなくなり、提案を感謝しています。JSONデータでRailsロジックを使用する

NEXTボタンをクリックしたときに質問を変更する必要があるクイズインターフェイスを作成しました。次の質問はJSONとしてAJAX呼び出しを介してロードされます。質問にはHTMLが含まれており、Railsはヘルパーをフィルタリングしてタグをフィルタリングする必要があります。

私はは、AJAX呼び出しを介して取得方法 JSONデータ 上のデータをサニタイズ使用する方法を確認していません。

私を導いてください。

EDIT: ストレスはJSONデータにありませんでした。それは正直な間違いでした。問題は、AJAX呼び出しによって返されたデータに対してRailsロジックを使用できないことでした。

+0

$( "#div")が必要だと思います。 – power

+0

返されたJSONデータでhttp://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitizeヘルパーメソッドを使用する必要があります。 –

+0

それで、あなたは応答してjsonデータを取得しています。要素を作成してdomに追加する前に、それをサニタイズする必要がありますか? – Kumar

答えて

0

若干の研究とthis answerの助けを借りて、私は自分が望むものを達成することができました。

<%= form_tag('/question', :remote => true, :id => 'quiz') do -%> 
    ... some code here ... 
<%= submit_tag 'Submit' %> 
<% end -%> 
_question.html.erb

私がしなければならなかったすべては、このような形でのクイズの質問コンテナの部分テンプレートを(たとえば、_question.html.erb)を作成することでした

routes.rbをしてルート/questionを作成します。

match 'question', :to => 'quiz#question', via: [:post] 

とQuizController.rbで応答を処理:

class QuizController < ApplicationController 
    def question 
    ... some logic here ... 

    @ques = ... 
    @options = ... 

    respond_to do |format| 
     format.html 
     format.js 
    end 
    end 
end 

さて、データでテンプレートをレンダリングするquestion.js.erbを作成します。フォームで

$('#quiz-container').html("<%= escape_javascript(render partial: 'question', 
:locals => { ques: @ques, options: @options }) %>"); 

:remote => trueオプションは、ここでのトリックを行います。それはajaxを介してフォームを提出する。今、AJAX呼び出しを介してデータを取得する部分テンプレート内でRailsロジックを使用できます。

関連する問題