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
感谢
答案 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
并移动后端文件夹中的文件夹。