Ruby on Rails执行rails g scaffold未生成views文件问题咨询
Rails 执行 scaffold 命令仅生成 model、controller 文件的原因分析
下面是可直接排查的几类常见原因:
- 项目为API模式创建
如果初始化项目时执行了rails new 项目名 --api,Rails会默认关闭所有视图、静态资源、helper等非API必要组件的生成,配置项config.api_only = true会出现在config/application.rb中。
确认方式:检查上述文件是否存在config.api_only = true配置,若为误开启API模式,将该配置改为false,同时补全Gemfile中sprockets-rails、sassc-rails等视图相关依赖即可恢复完整脚手架生成能力。 - 生成器配置被手动关闭
很多开发者会在config/application.rb中自定义生成规则,关闭不需要的文件生成,若配置了如下规则就会出现你遇到的问题:
解决方式:注释掉不需要的禁用配置,或把对应false改为true即可。config.generators do |g| g.erb false # 关闭ERB视图生成 g.assets false # 关闭JS/CSS资源生成 g.helper false # 关闭助手文件生成 g.test_framework nil # 关闭测试文件生成 g.jbuilder false # 关闭Jbuilder序列化文件生成 end - 依赖缺失或模板引擎不匹配
如果你把默认的ERB模板引擎替换为了Slim、Haml等其他引擎,但没有安装对应的适配gem(如slim-rails、haml-rails),生成器会跳过视图生成步骤;若Gemfile中移除了jbuilder、sassc-rails等默认依赖,对应文件也不会生成。
确认方式:检查Gemfile中相关依赖是否存在,模板引擎对应的适配gem是否正确安装。 - 自定义脚手架模板异常
如果你在lib/templates/rails/路径下自定义过scaffold相关的生成模板,模板存在语法错误或逻辑问题时,会导致生成流程中途中断,不会输出报错就直接结束。
排查方式:临时移走自定义的scaffold模板,重新执行生成命令测试。 - 排查辅助方法
执行生成命令时添加-v参数输出详细运行日志,可定位到具体是哪一步执行失败:rails g scaffold Widget name:string price:decimal -v
内容的提问来源于stack exchange,提问作者Shane Nicholson
相关产品推荐
相关产品推荐

