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

Rails 5.2路由报错:Ajax::Pacientes#obtener_datos_paciente非支持的控制器名称

问题根源

路由配置中控制器名称的格式不符合Rails约定:Rails路由解析命名空间下的控制器时,使用斜杠/分隔命名空间与控制器名,你配置中使用的双冒号::无法被正确识别,因此抛出is not a supported controller name错误。

修复方案

方案1:直接修改现有match配置

仅需要将路由中控制器的分隔符从双冒号改为斜杠即可生效,修改后代码如下:

match(
   "ajax/pacientes/:rut" => "ajax/pacientes#obtener_datos_paciente",
   :as => :obtener_datos_paciente,
   :via => :get
)

修复后你原有UsuariosController中的路径别名obtener_datos_paciente_ajax_pacientes_path不需要额外修改即可正常使用。

方案2:使用Rails标准namespace配置(推荐)

更符合Rails路由规范的写法是用namespace块统一管理同命名空间下的接口,代码可读性和可维护性更高:

namespace :ajax do
  get 'pacientes/:rut', to: 'pacientes#obtener_datos_paciente', as: :obtener_datos_paciente
end

使用该写法的话,生成的路由别名为ajax_obtener_datos_paciente_path,需要同步修改UsuariosController中的别名定义:

alias url_paciente ajax_obtener_datos_paciente_path
其他适配优化建议
  • 你现有代码中Usuario.first :rut => params[:rut]的查询写法在Rails 5.2版本中建议替换为Usuario.find_by(rut: params[:rut]),旧语法存在兼容风险。
  • 当前查询逻辑不会主动抛出Excepciones::DatosNoExistentesError异常,你可以根据业务需要调整为find_by!主动触发异常,否则该救援块不会被执行。

内容的提问来源于stack exchange,提问作者Diego Muñoz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:15:01