0Pricing
Ruby Academy · 课时

路由与资源

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"
end

HTTP 动词

每条路由都会指定一个表示意图的动词:

  • 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 路由与资源
  2. 控制器与操作
  3. 强参数
  4. 视图与渲染
← 返回 Ruby Academy