如何自定义路径设计用于视图的方式

时间:2014-07-26 18:34:43

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

我为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用于查找视图的路径中?

3 个答案:

答案 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,它会将设置切换为适合吗?

这是documentation to support this

答案 2 :(得分:0)

我试图找到我们的解决方案,尝试了一些并成功了:

namespace :public, module: nil, path: '' do
    devise_for :users, path: ''
end

这将生成路径,例如:/ sign_in,/ sign_out,不带任何前缀,并使用views / public / users目录中的devise视图