Har*_*Wit 37 namespaces ruby-on-rails ruby-on-rails-plugins devise
我正在尝试将我的rails项目拆分为普通用户的前端和管理员的后端.因此,我创建了一个名称空间"admin",以便我可以在地图管理员中轻松控制管理员特定的控制器方法/布局/身份验证.
我正在使用Devise来注册/验证我的管理员.因为它仅用于管理员,所以我试图将Devise移动到管理员命名空间.
我无法在Devise 的文档中找到我正在寻找的内容,但我在routes.rb中尝试过类似的内容:
namespace 'admin'do
devise_for :admins
end
Run Code Online (Sandbox Code Playgroud)
我也尝试制作一个自定义的Devise :: Sessions控制器,但这似乎也没有成功.
有谁知道如何做到这一点?我应该使用自定义(管理员)布局的常规路线设计吗?
iai*_*ain 40
简单地"移动"Devise到admin命名空间是错误的.Devise使用类似的控制器Devise::SessionsController,不能"移动".
我通常创建自己的控制器并从Devise继承它们:
class Admin::SessionsController < ::Devise::SessionsController
layout "admin"
# the rest is inherited, so it should work
end
Run Code Online (Sandbox Code Playgroud)
并在config/routes.rb以下配置:
devise_for :admins, :controllers => { :sessions => "admin/sessions" }
Run Code Online (Sandbox Code Playgroud)
或者您可以通过使布局更复杂来更改布局:
class ApplicationController < ActionController::Base
layout :layout
private
def layout
if devise_controller? && devise_mapping.name == :admin
"admin"
else
"application"
end
end
end
Run Code Online (Sandbox Code Playgroud)
Jac*_*Chu 24
如何将devise_for方法移动到范围中:
scope '/admin' do
devise_for :admins
end
Run Code Online (Sandbox Code Playgroud)
使用命名空间,控制器将尝试寻找不Admin::SessionController存在的命名空间.有范围它没有,所以应该工作.
Ron*_*ain 14
如何指定设计路径,将其放在命名空间之外.
devise_for :users, path: 'admins'
Run Code Online (Sandbox Code Playgroud)
这将生成以下路由
new_user_session GET /admins/sign_in(.:format) devise/sessions#new
user_session POST /admins/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /admins/sign_out(.:format) devise/sessions#destroy
user_password POST /admins/password(.:format) passwords#create
new_user_password GET /admins/password/new(.:format) passwords#new
edit_user_password GET /admins/password/edit(.:format) passwords#edit
PUT /admins/password(.:format) passwords#update
cancel_user_registration GET /admins/cancel(.:format) registrations#cancel
user_registration POST /admins(.:format) registrations#create
new_user_registration GET /admins/sign_up(.:format) registrations#new
edit_user_registration GET /admins/edit(.:format) registrations#edit
PUT /admins(.:format) registrations#updat
DELETE /admins(.:format) registrations#destroy
Run Code Online (Sandbox Code Playgroud)
如果这是您正在寻找的,那么您不必在这种情况下进行任何更改.
快乐编码:)
小智 5
无论杰克楚和伊恩解决方案要解决这个问题再加以定制登录表单的布局产生你的意见.
所以,config/routes.rb你应该拥有
scope '/subfolder' do
devise_for :admins, :controllers => { :sessions => "subfolder/sessions" }
end
namespace :subfolder do
match '/', :to => 'subcontroller#action'
end
Run Code Online (Sandbox Code Playgroud)
请记住,为您正在进行的会话创建自己的控制器.也许你需要通过使用来生成你的观点rails generate devise:views
检查这个有关设计任务的任何疑问.
| 归档时间: |
|
| 查看次数: |
24943 次 |
| 最近记录: |