Подтвердить что ты не робот

Как использовать рельсы remote: true с JSON?

Как указать, что я хочу, чтобы объект JSON возвращался при отправке запроса ajax с помощью параметра rails remote: true? И как только объект JSON будет возвращен, как его поймать и использовать?

4b9b3361

Ответ 1

Есть много способов ответить на это в зависимости от вашей специфики (например: вы используете jquery и адаптер UJS), но я собираюсь опубликовать материал из документа, который я использую для лучшего понимания всего процесса: Я использую этот Великий post в значительной степени: я обновлю свой ответ, поскольку в настоящее время я тоже работаю над этим материалом.

Вы можете добавить атрибут типа данных в элемент DOM следующим образом:

<%= link_to "Add a new task", new_project_task_path(@project), "data-type" => "json", :id => "add_task_btn" %>

Вы также можете определить тип данных по умолчанию в jQuery глобальной функции $.ajaxSetup(). Изменяет все запросы Ajax:

$.ajaxSetup({
      dataType: 'json'
});

И третий способ заключается в обратном вызове beforeSend:

$("#add_some_button").live("ajax:beforeSend", function(e, xhr, settings){
        new_data_type = "application/json, text/javascript, */*; q=0.01";
        xhr.setRequestHeader('accept', new_data_type);
})

(q = 0,01 является предпочтительным между 0 и 1)

Таким образом, вы можете изменить это свойство dataType и заголовки HTTP в соответствии с вашими потребностями. Для справки здесь приведен список возможных типов MIME: Здесь

И конкретный список типов медиафайлов javascript: Здесь

Обзор формата данных, отправляемых с сервера: 1.) Ajax отправляет запрос с установленным заголовком Accept в желаемый тип MIME. 2.) Контроллер Rails проверяет заголовок Accept, чтобы определить, что он должен вернуть. 3.) Контроллер определит, обрабатывает ли действие конкретный тип MIME. В rails 3 мы можем использовать response_with, pre 3.0 его блок response_to в действии контроллера.

Обзор способов использования Ajax в Rails 3.1:

Я считаю, что предпочтительным методом является использование по умолчанию dataType как script, а затем обрабатывать запросы AJAX с помощью js.erb или файла js.coffee.

Параметры: 1.) Нажмите Событие: Вставка элементов DOM 2.) Отправка формы через Ajax 3.) Удаление через Ajax 4.) Валидация на стороне клиента с помощью Ajax (использование удаленного ввода данных в поле ввода) 5.) Добавление динамических выборок (использование удаленного ввода данных в поле выбора) 6.) Ajax Pagination - верните HTML напрямую.

Снова то, что я здесь включаю, это мой собственный план/обзор, чтобы получить подробную информацию, пожалуйста, ознакомьтесь с Андреа Сингхом, отличным сообщением здесь.

Ответ 2

Пожалуйста, попробуйте следующее:

приложение/контроллеры/examples.rb

class ExamplesController < ApplicationController
    def new
        @my_json = { :message => "Hello json"}
    end
end

приложение/просмотров/примеры/new.html.haml

= link_to "New", new_examples_path :remote => true

приложение/просмотров/примеры/new.js.erb

console.log("<%= @my_json %>");
console.log("<%= @my_json['message'] %>");