Rails & Backbone :: когда отображать результаты? - PullRequest
0 голосов
/ 20 октября 2011

Я использую Backbone с Rails (3.1). У меня есть страница поиска. Первые результаты поиска, отображающие все результаты с разбивкой по страницам, должны отображаться при загрузке страницы. последующие поисковые запросы будут использовать магистраль. Как мне это сделать, не нарушая СУХОЙ?

Я мог бы выполнять все запросы в Backbone, но (1) это еще один запрос на странице load (2) магистрали нравится настраивать коллекцию при запуске.

Из основной документации:

Загрузка загруженных моделей Когда ваше приложение загружается в первый раз, обычно для отображения страницы обычно используется набор начальных моделей, которые, как вы знаете, вам понадобятся. Вместо того, чтобы запускать дополнительный AJAX-запрос для их извлечения, более приятным примером является то, что их данные уже загружены на страницу. Затем вы можете использовать сброс, чтобы заполнить ваши коллекции начальными данными. В DocumentCloud в шаблоне ERB для рабочего пространства мы делаем что-то вроде этого:

<script>
  Accounts.reset(<%= @accounts.to_json %>);
  Projects.reset(<%= @projects.to_json(:collaborators => true) %>);
</script>

1 Ответ

1 голос
/ 20 октября 2011

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

При первом поиске вы включаете результаты поиска в формате JSON в представление Rails:

<script type='text/javascript'>
   var search_results = new SearchResults(<%= results.to_json %>)
</script>

Итак, вы инициализируете свою модель и позволяете Backbone визуализировать результаты. (Вы не отображаете результаты в вашем представлении Rails.)

При последующих поисках вы получаете результаты JSON из rails и сбрасываете свою коллекцию search_results в Backbone, и это же представление отображает результаты.

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