我有一个电子商务应用,其中包含两个不同的设计模型seller
和buyer
。
我没有使用subdomains
。这就是每个urls
看起来像
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传递变量或其他内容以显示正确的导航栏吗?
答案 0 :(得分: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'
}
现在,您可以在视图中检查控制器并相应地显示导航栏。