2016-09-03 3 views
0

У меня есть приложение для электронной коммерции с двумя различными моделями дизайна seller и buyer. Я не использую subdomains .so это то, как каждый из urls выглядитПоказаны разные navbar на основе модели разработки

http://localhost:3000/buyers/sign_in 

http://localhost:3000/sellers/sign_in 

Я использую разные точки зрения для каждого также разработать из них. Но я не хочу показывать то же самое navbar для seller и buyer. Как я могу проверить, находится ли пользователь в seller page или buyer page и отображать навигационную панель на основании того, что от application.html.erb?

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

Я использую разные виды для покупателей и продавцов, так что можно передать переменную или что-то в application.html.erb с каждой страницы (например, login, signup), чтобы показать правильный навигатор?

+2

Я бы выбрал что-то вроде <% if current_page? ($ Path)%> // сделать что-то <% end %> –

+0

@KevinEtore Спасибо. Это должно сработать, но есть ли лучший способ, кроме как проверить это ... в другом месте я должен проверять каждое представление в таком виде, которое является громоздким ... Было бы лучше, если я смогу показать или скрыть на основе пространства имен. – Abhilash

ответ

2

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

rails generate devise:controllers [scope] 

В вашем случае область может по buyers или sellers. Ваши новые контроллеры будут созданы в app/controllers/[scope]/.

Замените эту строку в routes.rb вместо старого:

devise_for :[scope], controllers: { 
    sessions: '[scope]/sessions' 
} 

в вашем случае:

devise_for :sellers, controllers: { 
    sessions: 'sellers/sessions' 
} 

devise_for :buyers, controllers: { 
    sessions: 'buyers/sessions' 
} 

Теперь вы можете проверить контроллер в просмотре и шоу NavBars соответственно.

+0

У меня нет модели, называемой пользователями. У меня есть «продавцы» и «покупатели». Оба варианта - совершенно разные модели. Я создал «рельсы, создающие придуманный продавец», и «рельсы генерируют изобретатель покупателя» при создании этих моделей. Будет ли это работать в этом случае? – Abhilash

+0

Извините, я забыл изменить это. См. Отредактированный ответ. – Loqman

Смежные вопросы