如何在Rails 5中正确删除Helper文件?
正确删除Rails控制器对应Helper文件的方法
嘿,刚接触Rails的时候真的很容易踩这种自动生成文件的坑——我当初也干过直接删Helper导致应用崩掉的事😅。先给你理清楚为什么直接删除会报错,再一步步说正确的操作方式:
为什么直接删除Helper会崩溃?
当你用rails g controller Users生成控制器时,Rails会默认建立控制器与同名Helper的关联:它会期望app/helpers/users_helper.rb存在,并且在加载UsersController时自动尝试引入UsersHelper模块。你直接删掉Helper文件后,Rails找不到这个模块,自然就抛出了Couldn't find UsersHelper的错误。
正确的删除步骤
如果你已经生成了Helper文件,现在想删掉它,需要两步走:
删除Helper文件
在终端里执行命令删除对应的Helper文件(注意文件名是users_helper.rb,你之前可能打错成users.rb啦):rm app/helpers/users_helper.rb修改控制器,解除自动关联
打开app/controllers/users_controller.rb,在控制器类里添加一行代码,阻止Rails自动寻找并加载UsersHelper:- 如果你想完全禁用这个控制器的Helper加载(只使用全局的
ApplicationHelper),可以加:class UsersController < ApplicationController helper false # 禁用当前控制器的自动Helper加载 # ... 其他控制器代码 end - 或者如果你只想加载全局的
ApplicationHelper,可以显式指定:class UsersController < ApplicationController helper :application # ... 其他控制器代码 end
- 如果你想完全禁用这个控制器的Helper加载(只使用全局的
验证生效
重启你的Rails服务器(开发环境下修改控制器后最好重启一下),再访问页面或运行测试,就不会再出现找不到Helper的错误了。
预防措施:生成控制器时直接跳过Helper
如果一开始就确定不需要Helper文件,生成控制器的时候可以直接加--skip-helper参数,这样Rails根本不会生成对应的Helper文件,也就不用后续删除了:
rails g controller Users --skip-helper
内容的提问来源于stack exchange,提问作者davidtbernal
相关产品推荐
相关产品推荐

