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

如何重命名Rails嵌套路由参数 将students_id修改为id

问题解决方法

你当前路由参数不符合预期的核心原因是没有将honor声明为students资源的成员路由,Rails无法正确识别该路由作用于单个学生资源,才会生成异常的参数命名。

只需要给honor路由添加on: :member配置即可,修改后的路由代码如下:

resources :classrooms, only: [:index, :new, :create] do
  resources :students, only: [:index, :edit, :update], controller: 'students' do
    get :honor, on: :member
  end
end

配置完成后重新加载路由,生成的路径会完全符合你的预期:
/classrooms/:classroom_id/students/:id/honor(.:format)

此时在StudentsController的honor动作中,直接通过params[:id]就能获取对应学生记录的主键值,父级教室ID通过params[:classroom_id]获取,和常规的show、edit等成员动作的参数逻辑完全一致。

补充说明:如果后续你需要自定义学生资源的参数名(比如用学号student_no代替主键id),可以在resources :students后添加param: :student_no配置,不需要修改其他路由规则。

内容的提问来源于stack exchange,提问作者Matt-pow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:15:44