@rails_folks | '' http://twitter.com/#!/user/followers" | Пожалуйста, объясни - PullRequest
2 голосов
/ 03 марта 2011

Как бы вы достигли этого маршрута в рельсах 3 и в последней стабильной версии 2.3.9 или более поздней версии?

Объяснено

Меня не особо волнует действие последователей.Что мне действительно нужно, так это как создать '! #' В маршрутизации.

Кроме того, в чем смысл этого.Это синтаксис или семантика?

Ответы [ 3 ]

3 голосов
/ 03 марта 2011

Хеш-часть никогда не отправляется на URL-адрес, но обычной практикой является манипулирование хешем для ведения истории и создания закладок для приложений AJAX. Единственная проблема заключается в том, что при использовании хэша, чтобы избежать перезагрузки страницы, поисковые системы остаются позади.

Если у вас был сайт с некоторыми ссылками,

http://example.com/#home
http://example.com/#movies
http://example.com/#songs

Ваше AJAXy-приложение JavaScript видит #home, #movies и #songs и знает, какие данные оно должно загружать с сервера, и все работает нормально.

Однако, когда поисковая система пытается открыть тот же URL-адрес, хэш отбрасывается и всегда отправляет их на http://example.com/. В результате внутренние страницы вашего сайта - дома, фильмы и песни - никогда не индексируются, потому что до сих пор не было доступа к ним.

Google создает спецификацию сканирования AJAX или более, подобную контракту, который позволяет сайтам в полной мере использовать преимущества AJAX, при этом все еще получая выгоду от индексации поисковыми системами. Вы можете прочитать спецификацию, если хотите, но суть ее заключается в процессе перевода, когда все, что появляется после #!, добавляется в качестве параметра строки запроса.

Так, если бы ваши AJAX-ссылки использовали #!, тогда поисковая система перевела бы URL-адрес, например,

http://example.com/#!movies

до

http://example.com/?_escaped_fragment_=movies

Ваш сервер должен смотреть на этот параметр _escaped_fragment_ и отвечать так же, как ваш AJAX.

Обратите внимание, что в HTML5 History interface теперь предусмотрены методы для изменения пути к адресной строке без необходимости полагаться на фрагмент хеша, чтобы избежать перезагрузки страницы.

Использование методов pushState и popState

history.pushState(null, "Movies page", "/movies");

Вы можете напрямую изменить URL-адрес на http://example.com/movies, не вызывая обновления страницы. Поисковые системы могут продолжать использовать тот же URL, который вы использовали бы в этом случае.

3 голосов
/ 03 марта 2011

Rails ничего не получает напрямую после #. Вместо этого страница индекса проверяет это значение с помощью javascript и делает AJAX-запрос к серверу на основе URL после #. Какие маршруты они используют внутренне для обработки этого AJAX-запроса, я не уверен.

Смысл в том, чтобы иметь интерфейс на основе Javascript, где все находятся на одной и той же «странице», но данные в хэштеге позволяют ему загружать любые пользовательские данные на лету и без загрузки новой страницы, если вы решите например, посмотреть другого пользователя.

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

Часть после # в URI называется идентификатором фрагмента и интерпретируется клиентом, а не сервером. Вы не можете направить это, потому что оно никогда не покинет браузер.

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