Использование.js.erb для Ajax в Rails 3 (jquery.Яш vs.js.Эрб)

У меня есть две альтернативы для реализации ajax в приложении Rails 3.

1-привязка события к отправке с помощью jquery в представлении файла.js или viewaction.js.кофе и управление возвращенным json для изменения вещей в DOM.

2-Используйте remote= > true tag в Rails и кодируйте файл с именем viewaction.js.erb для внесения изменений в DOM и использования переменных класса, загруженных в контроллер.

  • каков рекомендуемый подход в Rails 3?
  • что путь рельсов сделать его?
  • какова наилучшая практика?
  • конкретные сценарии, когда одна из альтернатив лучше, чем другие?
  • что рекомендация для больших проектов?

спасибо

1 ответов


до Rails 3, добавив :remote => true создал бы кучу встроенного JavaScript внутри тега формы, но с Rails 3 UJS единственным изменением является добавление пользовательского атрибута HTML 5 data-remote=true. например:

<%= form_for(@post, :remote => true) do |f| %>  

будет генерировать

<form accept-charset="UTF-8" action="/posts" class="new_post" data-remote="true" id="new_post" method="post">  

на данный момент, это подход rails3. функция js, которая генерирует его, находится под rails.файл js. Если вы откроете рельсы.js file, вы заметите несколько удаленных обработчиков определение. Первый обрабатывает случай удаленной отправки формы, второй обрабатывает удаленные ссылки и поля ввода, третий обрабатывает не удаленные ссылки, которые должны вести себя как форма.

С глядя глубже в код я обнаружил, что этот файл фактически выполняет вызов jQuery ajax:

ajax: function(options) {
      return $.ajax(options);
    },

так нет никакой разницы между :remote => true и обычный вызов jQuery ajax,rails действует как обертка, чтобы вызвать то же самое методы.

подробнее здесь, здесь и здесь.