Отправка параметров в приложение rails с помощью jQuery - PullRequest
0 голосов
/ 27 января 2011

Я хотел бы отправить переменные из моей формы в мое приложение rails с помощью jQuery, возможно ли это, в настоящее время у меня есть код ниже, и настроить мое приложение rails для получения параметров, которые затем вставляются в БД.*

Что я делаю не так?

var dataString = 'author='+ name + '&book=' + book + '&genre=' + genre;

$.ajax({
type: "POST",
url: "http://localhost:3000/books",
data: dataString,
success: function() {
$('#form').html("<div id='message'></div>");
$('#message').html("<h2>Book Submitted!</h2>")
.append("<p>You will be notified soon!</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/check.png' />");
});

Спасибо

Ответы [ 4 ]

0 голосов
/ 28 января 2011

Абсолютный путь в вашем параметре URL вызывает у меня подозрения.

Ajax-вызовы могут быть сделаны только на тот же сервер, на котором обслуживается страница, из-за одинаковой политики происхождения JavaScript .

Ваша HTML-страница также размещена на http://localhost:3000? Если нет, то это ваша проблема.

Если это так, посмотрите на ответы о токенах подлинности.

0 голосов
/ 27 января 2011

Не думаю, что вам нужен jQuery для передачи параметров из формы в приложении Rails.

Обычно команда rails generate scaffold генерирует представления для редактирования и создания нового ресурса.Эти представления содержат формы, которые передают параметры в базу данных без jQuery.

Вот хороший учебник http://railstutorial.org/chapters/a-demo-app#top

0 голосов
/ 28 января 2011

Если вы передаете параметры из другого приложения (Rails, HTML, PHP и т. Д.), Возможно, проблема в том, что Rails ожидает, что вы передадите токен аутентификации.Поскольку вы не можете использовать его (поскольку вы передаете данные из другого приложения), вам необходимо выполнить одно из следующих действий:

Для определенных действий не защищайте от подделки:

protect_from_forgery :except => [:create, :update]

Или для всего контроллера:

skip_before_filter :verify_authenticity_token
0 голосов
/ 27 января 2011

Попробуйте использовать токен в своем запросе. Это защита от XSS-атак.

'authenticity_token': AUTH_TOKEN

например:

var dataString = 'author='+ name + '&book=' + book + '&genre=' + genre + '&authenticity_token='+AUTH_TOKEN;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...