Ruby on Rails本地页面访问报错:Cannot GET /simple_pages/about
嘿,我碰到过好几次类似的问题,结合你说的情况——别人修改git仓库后出现本地localhost:3000访问返回"Cannot GET",已经更新过Gems但没用,咱们一步步来排查:
先确认根路由配置是否完好
打开项目里的config/routes.rb文件,看看有没有根路径的定义,正常应该是类似这样的:root "home#index" # 或者对应你实际想用的控制器和动作如果这条配置没了,或者被改成了错误的路径,那访问根目录肯定会404。要是缺的话补上,然后重启服务器试试。
检查服务器启动的细节和日志
启动服务器时(执行rails s),别光盯着浏览器,看看终端里的输出:有没有报错?比如数据库连不上、某个Gem没装全?另外,当你刷新localhost:3000时,终端里会不会打出请求日志?如果连请求记录都没有,那可能是服务器没正常监听3000端口,或者端口被别的程序占了——可以试试换个端口启动:rails s -p 3001。排查git修改带来的配置变动
既然问题是别人修改仓库后出现的,建议你用git看看最近的改动,重点查这些关键文件:config/routes.rb(路由会不会被误删了?)Gemfile/Gemfile.lock(有没有改Rails版本或者依赖?)config/environments/development.rb(开发环境配置有没有变动?)
用这个命令看差异:
git diff HEAD~1 HEAD说不定是别人修复问题时不小心动了路由或者服务器配置。
彻底清理依赖和缓存
虽然你说已经更了Gems,但有时候缓存或者残留的旧依赖会搞事情,试试这套命令:bundle clean --force bundle install rails tmp:clear清理完再重启服务器,说不定能解决隐性的依赖问题。
确认对应控制器和视图存在
要是路由里写了root "home#index",那得确保app/controllers/home_controller.rb存在,而且里面有index动作,同时app/views/home/index.html.erb(或者你用的其他模板文件)也得在。不然路由找到了,但没对应的页面也会报错。
对了,还有个小细节:你提到的404页面看起来不像Rails默认的,会不会是你在错误的目录下启动了其他服务器?比如之前的Node项目?一定要确保是在Rails项目的根目录下执行rails s哦!
内容的提问来源于stack exchange,提问作者Kevin Meldau

