Как выполнить Ajax-запрос к действию create при загрузке страницы в Rails 3? - PullRequest
1 голос
/ 27 января 2011

У меня есть приложение Rails, которое связывается с API Twitter (используя гем Twitter).

Пользователь вводит свое имя пользователя на домашней странице, действие 'create' выполняет вызов API Twitter и вычисляетпосле чего новая запись сохраняется и загружается действие «show».

Если пользователь уже существует, вызов API не требуется, он будет перенаправлен прямо на «show».

Поскольку вычисление занимает некоторое время , я думаю, что лучший способ - показать страницу пользователя (например, localhost / user / username) с анимацией загрузки, вызвать действие, которое выполняет API Twitterзадание через Ajax, затем вывод результатов с помощью JS .

У меня не было опыта работы с Ajax и Rails, и все учебники, на которые я смотрел, имеют тенденцию иметь дело с формами, отправляемыми ната же страница , где это немного отличается.

Цените любую помощь, указатели или предложения, если есть лучшая практика для этого.

Я использую jQuery.

1 Ответ

0 голосов
/ 01 февраля 2011

Я бы предложил создать функцию jQuery, которая пингует ваш сервер каждые пару секунд, чтобы проверить, завершился ли вызов Twitter API.Таким образом, вы можете загрузить домашнюю страницу пользователя с помощью анимации загрузки, а затем просто удалить анимацию или выполнить другое действие, когда пинг сервера приведет к подтверждению.

Для этого вам, вероятно, потребуется иметьспособ сохранить состояние вызова API Twitter пользователя.Простым способом сделать это было бы иметь атрибут на вашем пользовательском объекте, который, например, хранит состояние вызова (0 = ожидающий, 1 = успешный, 2 = ошибка).

Затем можно запустить задачуна вашем сервере, который будет делать вызов в Twitter и заполнить атрибут вызова API.Клиент будет проверять сервер на наличие кода состояния и затем предпринимать соответствующие действия (продолжать показывать анимацию, перенаправление, отображать ошибку, ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...