Используйте логику Rails с данными JSON

0

Это может показаться довольно глупым вопросом, но на данный момент у меня нет идей и ценятся предложения.

Я создал интерфейс викторины, который должен изменить вопрос при нажатии кнопки NEXT. Следующий вопрос загружается как JSON через вызов AJAX. Теперь вопрос содержит HTML, и мне нужно использовать Rails sanitize helper для фильтрации тегов.

Я не уверен, как я хотел бы использовать метод дезинфицировать по данным данных JSON, полученных с помощью AJAX вызова.

Пожалуйста, направляйте меня.

EDIT: стресс не был связан с данными JSON. Это была честная ошибка. Проблема заключалась в невозможности использования логики Rails для данных, возвращаемых вызовом AJAX.

  • 0
    Я думаю, что вам нужно $ ("# div"). Html (data);
  • 0
    Мне нужно использовать это: apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize вспомогательный метод с возвращенными данными JSON.
Показать ещё 8 комментариев
Теги:

1 ответ

0

После некоторых исследований и с помощью этого ответа я смог добиться того, чего хотел.

Все, что мне нужно было сделать, это создать частичный шаблон (скажем, _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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню