Это может показаться довольно глупым вопросом, но на данный момент у меня нет идей и ценятся предложения.
Я создал интерфейс викторины, который должен изменить вопрос при нажатии кнопки NEXT. Следующий вопрос загружается как JSON через вызов AJAX. Теперь вопрос содержит HTML, и мне нужно использовать Rails sanitize helper для фильтрации тегов.
Я не уверен, как я хотел бы использовать метод дезинфицировать по данным данных JSON, полученных с помощью AJAX вызова.
Пожалуйста, направляйте меня.
EDIT: стресс не был связан с данными JSON. Это была честная ошибка. Проблема заключалась в невозможности использования логики Rails для данных, возвращаемых вызовом AJAX.
После некоторых исследований и с помощью этого ответа я смог добиться того, чего хотел.
Все, что мне нужно было сделать, это создать частичный шаблон (скажем, _question.html.erb) для контейнера вопросов викторины с такой формой:
_question.html.erb
<%= form_tag('/question', :remote => true, :id => 'quiz') do -%>
... some code here ...
<%= submit_tag 'Submit' %>
<% end -%>
Создайте маршрут /question
в routes.rb:
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. Теперь я могу использовать логику Rails внутри частичного шаблона, который получает данные через вызов AJAX.