我为Devise的SessionsController
提供了一些自定义视图。我正在使用范围视图,因此它们目前位于:
app/views/users/sessions
我需要将视图移动到子文件夹中,以便它们的新位置为:
app/views/public/users/sessions
我已在application.rb
中指定了我希望Devise用于这些视图的布局:
config.to_prepare do
Devise::SessionsController.layout "public/layouts/application"
end
但是我看不到指定视图路径的方法。
如何将public
添加到Devise用于查找视图的路径中?
答案 0 :(得分:1)
如果没有覆盖每个控制器并使用prepend_view_path
添加视图路径,似乎不可能:
module Public
module Users
class SessionsController < Devise::SessionsController
prepend_view_path 'app/views/public'
layout "public/layouts/application"
end
end
end
答案 1 :(得分:0)
查看范围
我不知道这是否会有所帮助:
#config/initializers/devise.rb
...
config.scoped_views = true
这就是Devise所说的:
启用范围视图。在渲染“sessions / new”之前,它将首先出现 检查
users/sessions/new
。它默认关闭,因为 如果你只使用默认视图,它会慢一些。
我想这意味着如果您在sessions_controller
目录中有自定义/public
,它会将设置切换为适合吗?
答案 2 :(得分:0)
我试图找到我们的解决方案,尝试了一些并成功了:
namespace :public, module: nil, path: '' do
devise_for :users, path: ''
end
这将生成路径,例如:/ sign_in,/ sign_out,不带任何前缀,并使用views / public / users目录中的devise视图