路由与资源
REST 风格路由
路由与资源 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
什么是路由
路由会将传入的 HTTP 请求(一个方法加一条路径)映射到处理该请求的控制器操作。路由文件是 Rails 应用的入口。
- 路由位于
config/routes.rb。 - 每条路由都会将一个 URL 连接到
controller#action。 - Rails 会按照从上到下的顺序匹配路由。
基本路由
最简单的路由使用 get 将路径映射到操作。在这里,对 /about 发起 GET 请求会调用 PagesController 中的 about 操作。
Rails.application.routes.draw do
get "/about", to: "pages#about"
endHTTP 动词
每条路由都会指定一个表示意图的动词:
get读取数据。post创建数据。patch/put更新数据。delete删除数据。
同一路径配合不同的动词,可以映射到不同的操作。
REST 风格资源
resources 辅助方法可以用一行代码为某个模型生成七条标准 REST 路由。这是 Rails 约定式路由的核心。
Rails.application.routes.draw do
resources :articles
end七个操作
resources :articles 会为以下操作创建路由:
index列出多个项目,show显示一个项目。new显示表单,create保存数据。edit显示表单,update保存修改。destroy删除数据。
这些操作涵盖了资源的完整生命周期。
路径辅助方法
路由会生成带名称的辅助方法,因此您无需硬编码 URL。resources :articles 会提供 articles_path、article_path(@article)、new_article_path 和 edit_article_path(@article)。
articles_path # => "/articles"
article_path(5) # => "/articles/5"
new_article_path # => "/articles/new"
edit_article_path(5) # => "/articles/5/edit"限制操作
使用 only 或 except 只生成您需要的路由。这样可以让路由范围保持精简且目标明确。
resources :articles, only: [:index, :show]
resources :comments, except: [:edit, :update]嵌套资源
嵌套资源可以在 URL 中表达归属关系。属于某篇文章的评论会变成 /articles/1/comments。嵌套路由会将 article_id 传递给控制器。
resources :articles do
resources :comments
end
# GET /articles/1/comments根路由
root 用于定义访问 / 时加载的内容,也就是应用的主页。为清晰起见,请将它放在路由文件靠近顶部的位置。
Rails.application.routes.draw do
root "articles#index"
end查看路由
运行 rails routes 可以列出每条路由及其动词、路径、辅助方法和控制器#操作。这是理解或调试应用路由最快的方法。
成员路由与集合路由
可以为资源添加自定义操作:
member路由作用于一条记录:/articles/1/publish。collection路由作用于整个集合:/articles/search。
resources :articles do
member { post :publish }
collection { get :search }
end快速检查
请测试您对路由的理解。
回顾:路由与资源
您已经学会了 REST 风格路由:
- 路由会将动词和路径映射到
controller#action。 resources会生成七条标准路由。- 路径辅助方法可以避免硬编码 URL。
only/except、嵌套、成员路由和集合路由可以自定义路由集合。root用于设置主页;rails routes会列出所有路由。
接下来,您将编写处理这些请求的控制器。
常见问题解答
「路由与资源」课时是免费的吗?
是的 — 「路由与资源」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「路由与资源」这节课中我会学到什么?
REST 风格路由 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「路由与资源」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。