Rails 3 & jQuery - Как они работают вместе, чтобы создать веб-приложение? - PullRequest
2 голосов
/ 23 сентября 2010

Мне нужно помочь понять сквозной поток в Rails.

Я мог бы использовать помощь со следующим примером. Давайте возьмем Facebook.

Когда вы находитесь на Facebook.com и нажимаете СООБЩЕНИЯ, URL-адрес изменяется на (facebook.com/?sk=messages), а затем AJAX используется для загрузки содержимого HTML / JS, которое вводится с помощью JavaScript в содержимое панель ... Нет обновления браузера, это то, что я после.

Мои конкретные вопросы:

  1. Для контента, который загружается через AJAX, этот контент поступает с частичного рельса? ... like (app> views> messages> _messagestable.html.erb
  2. Где должен находиться JavaScript, который знает, как извлечь содержимое сообщения, а затем вставить содержимое в панель содержимого? (это приложение.js?
  3. Как только содержимое сообщений (_messagestable.html.erb) внедряется в панель содержимого, ему потребуются новые функции JavaScript, специфичные для этого содержимого ... Где это должно жить?

1 Ответ

5 голосов
/ 23 сентября 2010

Предположительно, Rails работает так же, как и любой другой основной фреймворк.Как правило, вы хотите, чтобы ваши AJAX и GET запросы хорошо работали вместе.Итак, представьте, что у вас есть этот URL:

http://www.example.com/messages

Если вы перейдете сюда, вы загрузите раздел сообщений вашего сайта без необходимости вызова AJAX.Однако, если вы перейдете на:

http://www.example.com/#/messages

Вы попадете на www.example.com и можете использовать AJAX для отправки части "/ messages"на ваш сервер, где он может интерпретировать его как запрос к этому контроллеру, чтобы получить представление этих сообщений (или как бы вы его не настроили).Это техника, которую я видел как hijax, потому что вы можете перетекать свою страницу реальными элементами привязки, которые правильно ссылаются на

http://www.example.com/messages

или

http://www.example.com/maps

Но в своем javascript вы можете отменить действие ссылки и перенаправить браузер на:

http://www.example.com/#/messages

или

http://www.example.com/#maps

Теперь, когда у вас есть другая функция javascript, которая прослушивает изменения в хэш-теге, она делает то же самое, как если бы вы просто перешли по этой ссылкенепосредственно ... то есть отправляет "/ maps" на сервер, заставит сервер его интерпретировать и отбросит необходимый HTML-контент, которым вы хотите заполнить страницу.Таким образом, поисковые системы могут сканировать ваш сайт, и вы можете получить пользовательский интерфейс, который отлично работает для людей с и без javascript.

Теперь для загрузки дополнительных функций Javascript после того, как страница уже загружена, вы можете, я полагаю,просто используйте Javascript для вставки нового тега и добавьте источник туда, где находится ваш новый скрипт.Вы можете легко сделать это, используя метод .getScript () jQuery:

http://api.jquery.com/jQuery.getScript/

Относительно того, где находится весь этот скрипт ... Я думаю, это решать вам или Rails.Возможность разобрать хеш URL - это то, что вам обязательно нужно, чтобы все это собралось вместе.Для этого у вас есть опция нескольких библиотек jQuery:

Обнаружение изменения кнопки Back / Hash в URL

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

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