如何修改Rails资源路径:将students/:id改为students/stories/:id
修改单个学生访问路径的解决方案
如果你需要把单个学生的访问URL从/students/:id改成/students/stories/:id,同时保留原有的集合路由和其他学生相关路由,可以按以下两种方式调整:
方式一:仅修改详情页(show)路径
这种方式只改动单个学生的详情访问路径,其他路由(如新建、编辑学生)保持原有结构,且无需修改控制器或视图中的路由辅助方法:
修改后的routes.rb代码:
Rails.application.routes.draw do # 生成除show外的所有学生RESTful路由 resources :students, except: [:show] do collection do get :posters get :stories end end # 自定义单个学生的详情路径,并重写路由辅助方法为student_path get 'students/stories/:id', to: 'students#show', as: :student root "department#index" get "department/about" end
方式二:所有单个学生操作都使用新路径
如果需要把编辑、更新、删除单个学生的路径也统一改成/students/stories/:id开头,可以这样写:
Rails.application.routes.draw do resources :students, only: [:index, :new, :create] do collection do get :posters get :stories end # 嵌套单个学生的操作路由 scope 'stories/:id' do get '', to: 'students#show', as: :student get 'edit', to: 'students#edit', as: :edit_student patch '', to: 'students#update' put '', to: 'students#update' delete '', to: 'students#destroy' end end root "department#index" get "department/about" end
验证路由
运行终端命令rails routes,可以查看生成的路由规则,确认新路径是否生效,以及原有路由是否保留。
内容的提问来源于stack exchange,提问作者Thai Nam Hoang
相关产品推荐
相关产品推荐

