Вступление
Если вы работаете с проектом Ruby on Rails, ваши требования могут включать некоторую интерактивность с HTML-кодом, созданным вашим https://guides.rubyonrails.org/v5.2/action_view_overview.html. [просмотреть шаблоны]. Если это так, у вас есть несколько вариантов реализации этой интерактивности.
Например, вы можете внедрить платформу JavaScript, например React или https://emberjs.com. / [угасающий]. Если ваши требования включают в себя состояние обработки на стороне клиента или вас беспокоят проблемы с производительностью, связанные с частыми запросами к серверу, тогда может иметь смысл выбрать одну из этих платформ. Многие одностраничные приложения (SPA) используют этот подход.
Однако при реализации инфраструктуры, которая управляет состоянием и частыми обновлениями на стороне клиента, следует учитывать несколько соображений:
-
Это возможно для требований к загрузке и преобразованию - таких как синтаксический анализ JavaScript, а также выборка и преобразование JSON в HTML - для ограничения производительности.
-
Приверженность фреймворку может включать в себя написание большего количества кода, чем требует ваш конкретный вариант использования, особенно если вы ищете мелкомасштабные улучшения JavaScript.
-
Состояние, управляемое как на стороне клиента, так и на стороне сервера, может привести к дублированию усилий и увеличить площадь ошибок.
В качестве альтернативы команда по адресу Basecamp (та же команда, которая написала Rails) создала https://stimulusjs.org [Stimulus.js], которую они описывают как «скромную среду JavaScript для HTML, который у вас уже есть ». Стимул предназначен для улучшения современного приложения на Rails, работая с серверным HTML-кодом. Состояние находится в Document Object Model (DOM), и платформа предлагает стандартные способы взаимодействия с элементами и событиями. в ДОМ. Он работает бок о бок с Turbolinks (включен в Rails 5+ по умолчанию), чтобы повысить производительность и время загрузки с помощью кода, который ограничен и имеет четко определенную цель.
В этом руководстве вы будете устанавливать и использовать Stimulus для создания существующего приложения на Rails, которое предлагает читателям информацию об акулах. В приложении уже есть модель для обработки данных об акулах, но вы добавите вложенный ресурс для сообщений об отдельных акулах, что позволит пользователям выстраивать мысли и мнения об акулах. Эта часть работает примерно параллельно [Как создать вложенные ресурсы для Ruby на Rails Application, за исключением того, что мы будем использовать JavaScript для управления положением и внешним видом постов на странице. Мы также примем несколько иной подход к построению самой модели поста.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Локальный компьютер или сервер разработки под управлением Ubuntu 18.04. Ваша машина разработки должна иметь пользователя без полномочий root с правами администратора и брандмауэром, настроенным с помощью
+ ufw +
. Инструкции о том, как это настроить, см. В нашем учебном руководстве Initial Настройка сервера с Ubuntu 18.04. -
https://nodejs.org [Node.js] и npm, установленные на локальном компьютере или на сервере разработки. В этом руководстве используются версия Node.js и версия npm. Для получения инструкций по установке Node.js и npm в Ubuntu 18.04 следуйте инструкциям в разделе * «Установка с использованием PPA» * на https://www.digitalocean.com/community/tutorials/how-to-install-node- js-on-ubuntu-18-04 # Установка-использование-a-ppa [Как установить Node.js в Ubuntu 18.04].
-
Ruby, rbenv и Rails, установленные на вашем локальном компьютере или сервере разработки, следуя * Шаги 1-4 * в https://www.digitalocean.com/community/tutorials/ Как установить Ruby on Rails с помощью rbenv в Ubuntu 18.04. В этом руководстве используются Ruby, rbenv и Rails.
-
Установлен SQLite и создано базовое информационное приложение по акулам, следуя указаниям в https://www.digitalocean.com/community/tutorials/how-to-build-a-ruby-on-rails-application[Как построить Ruby на Rails Application.
Шаг 1 - Создание вложенной модели
Нашим первым шагом будет создание вложенной + Post +
model, которую мы свяжем с нашей существующей моделью + Shark +
. Мы сделаем это, создав активную запись associations между нашими моделями: посты будут принадлежать определенным акулам, и каждая акула может иметь несколько постов.
Чтобы начать, перейдите в каталог + sharkapp +
, который вы создали для своего проекта Rails, в предварительных условиях:
cd sharkapp
Чтобы создать нашу модель + Post +
, мы будем использовать команду +rails generate + `
с генератором