Ruby Rails 单独的管理文件夹、控制器和布局
Ruby on Rails Separate admin folder, controllers and layouts
我是 Rails 上 Ruby 的新手。我希望管理部分具有以下结构。
app/controller/admin/admin_controller.rb 和 app/controller/admin/ 文件夹下的所有其他管理部分控制器
app/views/layout/admin/admin.html.erb 为管理部分保持单独的 html 布局
同时我想使用 Devise Gem 进行管理员和前端用户身份验证。
我执行了 rails g devise:views admin
、rails generate devise Admin
和 rails g controller admin/home index
命令,为管理员用户创建了视图、模型和控制器。现在我需要添加什么路由和其他设置,以便 ruby 可以理解如果我键入 http://localhost:3000/admin/ then i should be redirected to http://localhost:3000/admins/sign_in/ 页面并在输入正确的管理员凭据后我应该重定向到 controllers/admin/home_controller.rb[ 的索引方法=21=]
是否也可以保留 Devise 管理视图的单一约定,例如 admin/sign_in
而不是 admins/sign_in
?
找了很多都没有得到相关的帮助。请提供实现上述目标的步骤。
提前致谢。
这是路由文件的样子
Rails.application.routes.draw do
namespace :admin do
get 'home/index'
end
devise_for :admins
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root to: "home#index"
end
当我键入 http://localhost:3000/admin/ 时,出现以下错误
您的问题是您没有为 /admin
.
定义根路由
我在其中一个应用程序中有相同的 URL 约定路线,routes.rb
看起来像这样:
Rails.application.routes.draw do
# Admin part
devise_for :admins, path: '/admin'
scope module: :admin, path: '/admin', as: 'admin' do
root to: 'home#index'
end
# Redirect app root to client part
root to: redirect(path: '/panel', status: 301)
# Client part
devise_for :clients, path: '/panel'
scope module: :panel, path: '/panel', as: 'panel' do
...
end
end
我是 Rails 上 Ruby 的新手。我希望管理部分具有以下结构。
app/controller/admin/admin_controller.rb 和 app/controller/admin/ 文件夹下的所有其他管理部分控制器
app/views/layout/admin/admin.html.erb 为管理部分保持单独的 html 布局
同时我想使用 Devise Gem 进行管理员和前端用户身份验证。
我执行了 rails g devise:views admin
、rails generate devise Admin
和 rails g controller admin/home index
命令,为管理员用户创建了视图、模型和控制器。现在我需要添加什么路由和其他设置,以便 ruby 可以理解如果我键入 http://localhost:3000/admin/ then i should be redirected to http://localhost:3000/admins/sign_in/ 页面并在输入正确的管理员凭据后我应该重定向到 controllers/admin/home_controller.rb[ 的索引方法=21=]
是否也可以保留 Devise 管理视图的单一约定,例如 admin/sign_in
而不是 admins/sign_in
?
找了很多都没有得到相关的帮助。请提供实现上述目标的步骤。
提前致谢。
这是路由文件的样子
Rails.application.routes.draw do
namespace :admin do
get 'home/index'
end
devise_for :admins
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root to: "home#index"
end
当我键入 http://localhost:3000/admin/ 时,出现以下错误
您的问题是您没有为 /admin
.
我在其中一个应用程序中有相同的 URL 约定路线,routes.rb
看起来像这样:
Rails.application.routes.draw do
# Admin part
devise_for :admins, path: '/admin'
scope module: :admin, path: '/admin', as: 'admin' do
root to: 'home#index'
end
# Redirect app root to client part
root to: redirect(path: '/panel', status: 301)
# Client part
devise_for :clients, path: '/panel'
scope module: :panel, path: '/panel', as: 'panel' do
...
end
end