Преобразование существующего приложения rails на одну страницу

Я хотел бы преобразовать существующее приложение rails с несколькими моделями, контроллерами и представлениями в одностраничное приложение (SPA). Как я могу отобразить представления для каждой модели не как отдельные html-страницы, а как разделы главной страницы (скажем, div для каждого раздела), к которым можно перейти с помощью вертикальной прокрутки? Можно ли получить такой же пользовательский опыт, я имею в виду именно вертикальную прокрутку, в стандартном приложении MVC Rails?

4 ответа

Решение

Итак, чтобы преобразовать стандартное приложение rails в одностраничное приложение (SPA), вам нужно подключить его к внешней среде MVC. HTML-код, который ранее обрабатывался вызовами rails, теперь будет передаваться в интерфейсную среду MVC, которая будет выполнять фрагменты страницы вместо полной страницы путем выполнения вызовов AJAX. Ничто не меняется с моделями, и почти весь код контроллера также остается неизменным. Как интерфейсный MVC-фреймворк вы можете взглянуть на angular.js, который взят из google stable of products или backbone.js, который я лично нахожу отличным. На самом деле существует целый ряд других фреймворков, от тяжелых и полнофункциональных, таких как ember.js, до минимальных и необходимых, например, handlebar.js. Если вы ищете учебные пособия, у tutsplus есть учебник по магистрали на рельсах, о котором я знаю. Надеюсь, это поможет вам начать.

Вы должны визуализировать представления на странице, которую вы хотите отобразить, это не относится к модели и коду контроллера. Для этого обратитесь по следующей ссылке http://guides.rubyonrails.org/layouts_and_rendering.html

Вполне возможно, что вы должны вызывать свои действия через javascript вместо html, чтобы каждое действие возвращало часть страницы, которую вы хотите изменить, вместо перезагрузки всей страницы.

Пример, предположим, что вы хотите добавить пользователя в список пользователей:

  • когда вы нажимаете кнопку добавления, вы отправляете сообщение ajax на ваш контроллер.

  • это действие отвечает на формат js файлом javascript (controller_action.js.erb)

  • Этот js-файл оценит частичный шаблон, соответствующий одной строке вашей таблицы (_user.html.erb), найдет вашу таблицу и добавит оцененный html в таблицу.

Посмотри на:

http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

В частности, этот раздел, который отвечает на ваш вопрос с примером:

http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

Попробуйте turbolinks gem Ваше приложение будет похоже на одностраничное приложение с меньшими усилиями и меньшим временем.

Другие вопросы по тегам