Сохранение элементов в базе данных с помощью $ .ajax () - PullRequest
1 голос
/ 16 марта 2011

Я пытаюсь сохранить динамически созданные элементы из моего файла application.js в базу данных. Будет ли код выглядеть примерно так:

$.ajax({
   type: "POST",
   data: { title: 'oembed.title', thumbnail_url: 'oembed.thumbnail_url'}
});

Есть что-то, что я пропускаю? Предположим, что oembed.title и oembed.thubnail_url содержат значения, которые я хочу сохранить, и что title и thumbnail являются столбцами базы данных.

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Я собираюсь предположить, что вам нужно включить некоторые предоставленные пользователем данные в новый объект БД - в противном случае было бы гораздо проще просто создать их из Rails.

Если вы используете полностью пользовательских данных, вы можете использовать метод serialize() (используйте скрытые поля для сгенерированного сервером материала):

jQuery.ajax({
    url: '/path/to/whatever',
    data: $('#MyForm').serialize(),
    type: 'POST'
});

Или вы можете использовать jQuery Form Plugin - это позволит вам легко комбинировать предоставленные пользователем данные с данными, генерируемыми сервером.Например:

$('#MyForm').ajaxForm({
    //Hardcoded/server-generated stuff goes in here
    //(and will be added to the data from the form inputs):
    data: {title: oembed.title},
    type: 'POST'
});

Функция ajaxForm() устанавливает форму и ее значения по умолчанию и отправляет вызов AJAX, когда пользователь нажимает кнопку отправки (см. Также: ajaxSubmit()).

На стороне Rails все должно работать точно так же, как если бы пользователь отправил форму в обычном режиме (хотя вы можете просто ответить кодом состояния / сообщением - без вызова для перенаправления или рендеринга страницы).

Надеюсь, это поможет!

PS: Из вашего примера видно, что вы можете использовать data: oembed в своих вызовах AJAX.Это отправит все атрибуты oembed ...

0 голосов
/ 16 марта 2011

Первая проблема, которую я вижу - ваши данные - строки. Избавьтесь от цитат

$.ajax({
   type: "POST",
   data: { title: oembed.title, thumbnail_url: oembed.thumbnail_url}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...