如何更改Devise自定义视图路径?

时间:2015-08-13 14:57:02

标签: ruby-on-rails devise

Hello是否有办法更改devise的默认视图路径,导致如果运行rails g devise:views admin将在views文件夹中生成一个admin文件夹。如果我更改此文件夹位置,例如从视图/管理员移动到views/backend/admins设计将找不到并使用默认视图。

同样的问题是rails g devise:controllers admin设计如果文件夹不在app/controllers

,就找不到自定义控制器

这是我的Routes.rb

devise_for :admins, skip: :registration, path: '/backend'

namespace :backend do
    #devise_for :admin, module: 'admin', skip: :registration #i've already try somethings like this but wont work
    resource :static_pages, path: '', only: [] do
        root to:'static_pages#dashboard'
    end
end

感谢

2 个答案:

答案 0 :(得分:1)

如果您知道所有您的管理控制器正在访问此'后端'路径然后你可以做到以下几点:

class AdminController < ApplicationController
  before_filter :set_theme

  def set_theme
    prepend_view_path "app/views/backend"
  end
end

然后确保您的管理员控制器继承自AdminController,您可能需要稍微使用该路径来适应您的设置。

*此方法受到Tuts +的限制,如果可以,请查看there

答案 1 :(得分:0)

这就是我的所作所为:

我运行rails g devise:controllers admin并在app/controllers/admins中获取管理员的所有控制器,然后将其移至app/controllers/backend/admins并将每个控制器的标题更改为: class Backend::Admins::SessionsController < Devise::SessionsController

但我已经在backend_controller.rb中有一个名为app/controllers/的文件,其中包含:

class BackendController < ApplicationController
end

我的routes.rb变成了这样:

Rails.application.routes.draw do
devise_for :admins, module: 'backend/admins', path: '/backend', skip: :registration
...

所以我可以在我的app/views/backend/admins/ app/views/backend/admins/sessions/new.html.erb

中组织和创建视图

基本上我使用rails g devise:views admins并移动后端文件夹中的文件夹。