#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. Дерзайте. Это, вероятно, проще, особенно. за то, что вы упомянули. Не могли бы вы подтвердить мой ответ?