You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Ruby on Rails项目中Routes.rb配置导致的路由错误?

Ruby on Rails路由错误修复方案

你遇到的路由错误核心原因有两个:

  1. 你在checkFile方法中调用redirect_to home_showFiles_path(@files)时,给路由传入了@files数组参数,但你当前定义的get 'home/showFiles'路由没有配置接收任何动态参数,导致生成的URL和已注册路由不匹配。
  2. Ruby on Rails默认遵循蛇形命名约定,你方法名用的大驼峰写法(checkFile、showFiles)和路由命名路径不匹配,也容易触发路由识别错误。

修复步骤

  1. 调整参数传递逻辑,避免直接在GET路由跳转时传递数组参数(GET请求URL有长度限制,且数组传递容易出现格式异常),改用session暂存查询结果:
    修改home_controller.rb中的checkFile方法:
def checkFile
  word = params[:folder][:word]
  path = params[:folder][:path]
  @files = checkWord(word, path)
  # 将查询结果存入session,跳转后再读取
  session[:filtered_files] = @files
  # 跳转时不传递多余参数
  redirect_to home_showFiles_path
end

新增showFiles方法读取session中的结果:

def showFiles
  # 读取后删除session中的数据,避免重复复用
  @files = session.delete(:filtered_files) || []
end
  1. 优化routes.rb配置,明确命名路由避免路径识别异常,也可以同步调整为符合Rails约定的蛇形路径:
Rails.application.routes.draw do
  get 'home/submission3', as: :home_submission3
  post 'home/check_file', to: 'home#checkFile', as: :home_check_file
  get 'home/show_files', to: 'home#showFiles', as: :home_show_files
end

如果调整了路由路径,记得同步修改页面表单提交地址以及跳转时的路由方法名为home_show_files_path即可。

额外潜在问题提示

你代码中submission3.new写法有误,submission3是控制器方法名不是模型类名,你需要替换为对应的模型类名(通常是大驼峰格式,比如Submission3.new),否则后续保存逻辑会报错。

内容的提问来源于stack exchange,提问作者Bilal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:45:05