Rails: использование jQuery для отображения результатов кнопки отправки формы, вызывающей другую страницу?

#jquery #ruby-on-rails

#jquery #ruby-on-rails

Вопрос:

У меня заработало мое первое приложение Rails! У меня есть текстовое поле для ввода пользователем предложения, а затем из этого предложения я использую:

 form_tag(another_page, :method => "get")
  

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

Теперь я хочу сделать еще один шаг вперед! Я хочу иметь возможность использовать jQuery (возможно, .загрузить команду?) для отображения результатов на той же странице, без необходимости загружать полностью отдельную страницу. (В конечном итоге я собираюсь сделать так, чтобы каждое новое предложение опускалось на единицу ниже (используя .prepend), а новое предложение отображалось вверху.)

У меня два вопроса: является ли это приемлемым способом сделать это (используя jQuery для загрузки содержимого другой страницы)? И, самое главное, как мне изменить свой код, чтобы сделать это?

Я знаком с некоторыми jQuery, но я не знаю, как, например, изменить отправку формы в Rails, чтобы не загружать новую страницу (и вместо этого получить эту новую страницу в jQuery.вызов загрузки).

Спасибо, Дерек.

Ответ №1:

Дерек, добро пожаловать в Rails!

Прежде всего, да, использование jQuery — отличная идея.

Есть несколько способов сделать это. Вы можете написать прямой jQuery и во внешнем вызове файла javascript (или что-то вроде этого):

 $('#form_id').submit(function(e) {
  e.preventDefault();
  $.ajax({
    dataType: 'json',
    url: $this.attr('action'),
    type: $this.attr('method').toUpperCase(),
    data: $this.serialize(),
    success: function(data) { /* Do Stuff */ }
  })
});
  

Или у rails есть помощники, которые делают что-то из этого за вас, так что все, что вам нужно сделать, это сказать form_tag(another_page, :method => "get", :remote => true) . Для этого вам также необходимо включить rails.js файл на свою страницу (вот хорошая статья об этом: http://www.alfajango.com/blog/rails-3-remote-links-and-forms /)

Помогает ли это?

Комментарии:

1. Не забудьте включить драгоценный камень jquery-ujs, иначе вместо него будет использоваться prototype github.com/rails/jquery-ujs

2. Да, это помощь. Спасибо! Я мог бы пойти по пути rails.js для меня это выглядит проще.

3. Дерзайте. Это, вероятно, проще, особенно. за то, что вы упомянули. Не могли бы вы подтвердить мой ответ?