Рельсы - Лучшая практика для двух разных конструкций - PullRequest
0 голосов
/ 27 апреля 2018

Я довольно новичок в Rails.

При создании веб-сайта, на котором у вас есть реальный веб-сайт для вашей компании, описание вашего продукта и много другой информации, но вам также нужна панель пользователя, где он может управлять своими вещами.

Например, веб-сайт с крипто-кошельком, у вас есть настоящий веб-сайт, объясняющий все, показывающий информацию и тому подобное, и у вас есть торговая панель, дизайн которой совершенно отличается от веб-сайта.

В Rails у вас есть файл application.html.erb, который структурирует весь сайт:

<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

Где yield отображает текущий вид, который просматривает пользователь.

Как вы можете управлять полностью двумя различными дизайнами с этой структурой? Лучше ли создавать совершенно новый проект rails для пользовательской панели? Или все это можно сделать в одном проекте?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Файл application.html.erb считается файлом "макета", а <%= yield %> - это место, где каждый контроллер может вставить содержимое страницы в общий макет.

Вы можете иметь две разные версии вещей, просто добавив еще один файл рядом с application.html.erb, названный что-то вроде website.html.erb. Теперь в любом имеющемся у вас контроллере вы можете просто добавить к началу layout 'website', и все действия контроллера в этом контроллере будут использовать макет website.

Используя это, вы можете сделать несколько полезных вещей:

  • Имеется два макета: один для вашего приложения (само приложение кошелька) и один для вашего веб-сайта (общедоступные страницы, не требующие учетной записи пользователя). Каждый макет может включать в себя разные CSS и JS
  • Создайте контроллер, называемый чем-то вроде static_pages_controller, который предназначен для «статических» страниц (страниц, которые в основном не изменяются в зависимости от пользователя). Для каждой страницы, которую вы хотите на сайте, просто добавьте действие контроллера и соответствующий шаблон. Скажите этому контроллеру использовать ваш шаблон website, как указано выше.
  • Поскольку ваши статические страницы проходят через Rails, вы даже можете проверить, вошел ли пользователь в систему, и при необходимости изменить свой контент, поэтому вместо «Вход» вы можете сказать «Моя учетная запись»

Подробнее о макетах вы можете прочитать в официальной документации .

0 голосов
/ 27 апреля 2018

Вы можете сделать это в одном приложении рельсов. Используйте static_pages controller для своих маркетинговых сайтов и используйте devise для аутентификации пользователей.

с устройством devise вы можете использовать before_action :authenticate_user! для контроллера панели управления, чтобы ограничить доступ только зарегистрированным пользователям.

Вы также можете прочитать книгу Майкла Хартла о создании приложений Ruby-On-Rails. https://www.railstutorial.org

и взгляните на Mackenzie Child's 12 in 12 challenge. https://www.youtube.com/watch?v=7-1HCWbu7iU&list=PL23ZvcdS3XPLNdRYB_QyomQsShx59tpc-

...