Как Twitter получает две разные домашние страницы в зависимости от входа в систему или нет?- Рельсы 3.1
-
27-10-2019 - |
Вопрос
Если вы перейдете на Twitter.com , когда вы не вошли в систему, вы увидите маркетинговую страницу споля входа и регистрации.
Однако, если вы перейдете туда после входа в систему, вы увидите свою ленту активности для своего дескриптора Twitter.
Я знаю, что один из способов сделать это в Rails - это создать код для зарегистрированных пользователей и просто использовать код для маркетингового сайта.Но Твиттер не использует кодовые коды, поэтому мне интересно, как они это делают?
Это простой случай наличия одного корневого маршрута, а затем оператора if, отображающего две разные страницы в зависимости от того, вошел ли пользователь в систему?
Или есть какой-нибудь другой, более интересный трюк с маршрутизацией, который я могу использовать для этого?
Если это просто общий код кода, это кажется немного взломанным ... нет?
Спасибо.
Решение
Другие советы
По умолчанию методы контроллера, обрабатывающие определенные маршруты, отображают представление с соответствующим именем (маршрут home / index ссылается на домашний контроллер и действие index, которое, в свою очередь, отображает представление index.html.erb внутри папки app / views / home.).
Однако внутри метода контроллера, который обрабатывает корневой запрос, вы можете просто отобразить другое представление в зависимости от того, вошел ли пользователь в систему или нет.
Вероятно, у вас будет что-то вроде этого:
родовое словоконец
В этом случае "logged_in_user" будет другим представлением (шаблоном или файлом html.erb) из папки app / views / home.
Дополнительную информацию можно найти здесь: руководство по рендерингу Rails
это может быть своего рода перенаправление для незарегистрированных пользователей на другой контроллер, проверка сеанса пользователя может быть выполнена в before_filter