ruby-on-rails - 设计 : overriding the devise routes and controllers at the same time

标签 ruby-on-rails ruby-on-rails-4 devise

我想同时从这个 gem 中覆盖我的设计路线和 session Controller 。我该怎么做呢 ?

我想过:

 devise_for :admins, :skip => [:sessions], 
  controllers: { sessions: "admins/sessions" }

  devise_scope :admin do
    get    'login' => 'devise/sessions#new', :as => :new_admin_session
    post   'login' => 'devise/sessions#create', :as => :admin_session
    delete 'logout' => 'devise/sessions#destroy', :as => :destroy_admin_session
  end

但我的路径正在改变,但 Controller - 不是。我怎样才能实现这个权利?

最佳答案

当您指定 controllers: { sessions: "admins/sessions" } 时,这意味着您有一个名为 sessions_controller.rb 的文件在此路径中:app/controllers/admins/sessions_controller.rb ,并且它以:

module Admins
  class SessionsController < Devise::SessionsController

如果这是您希望应用程序使用的 Controller ,则在 devise_scope 中阻止,你必须告诉它使用 admins/sessions ,不是 devise/sessions , 像这样:
devise_scope :admin do
  get    'login' => 'admins/sessions#new', :as => :new_admin_session
  post   'login' => 'admins/sessions#create', :as => :admin_session
  delete 'logout' => 'admins/sessions#destroy', :as => :destroy_admin_session
end

关于ruby-on-rails - 设计 : overriding the devise routes and controllers at the same time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888098/

相关文章:

ruby-on-rails - Rails 3.2.8,只有重启服务器才会取消缓存模型

jquery - Ruby on Rails 和 jeditable (jquery)

java - 为注册和确认设计定制

ruby-on-rails - 如何重定向到特定 Controller ?

ruby-on-rails - 根据成员的年龄过滤团队的范围

ruby-on-rails - 从 Rails 应用程序的角度来看,group 和 group_by 的 mongoid 版本是什么?

ruby-on-rails - 在 Controller 内部调用的 Rails Minitest Stub 类方法

ruby-on-rails - Rails 迁移不会改变 schema.rb

ruby-on-rails - Cancan,允许用户只能查看或编辑自己的内容

ruby-on-rails - 帖子中的真实性 token 无效