如何修改Rails框架默认生成的视图目录路径
修改Rails控制器视图的默认生成路径
要让rails g controller foo index生成的视图文件存到app/views/controllers/foo而非默认的app/views/foo,可以通过重写Rails的控制器生成器实现:
- 在项目的
config/initializers目录下创建新文件,比如命名为controller_generator.rb - 将以下代码写入该文件:
Rails.application.config.generators do |g| g.controller do |controller| controller.view_path = proc { |controller_name| "app/views/controllers/#{controller_name}" } end end
这段代码会覆盖控制器生成器默认的视图路径计算逻辑,把视图根目录改为app/views/controllers,再拼接控制器名称作为子目录。
- 保存文件后,重新运行
rails g controller foo index,视图文件就会生成在app/views/controllers/foo/index.html.erb路径下。
额外注意:修改生成路径后,需要让Rails能找到新路径下的视图,可在同一个初始化文件中添加配置:
ActionController::Base.prepend_view_path "app/views/controllers"
这样控制器渲染视图时,会优先查找app/views/controllers下的对应目录,兼容原有视图查找逻辑。
内容的提问来源于stack exchange,提问作者Michael Irwin
相关产品推荐
相关产品推荐

