📅  最后修改于: 2021-01-12 02:44:39             🧑  作者: Mango
Rails路由器识别URL,并将其分派给控制器的动作。它还会生成路径和URL。 Rails路由器处理URL的方式与其他语言路由器不同。它确定请求的控制器,参数和操作。
基本上,路由器是一种将传入请求重定向到控制器和操作的方法。它取代了mod_rewrite规则。最好的事情是,在Rails中,路由可与任何Web服务器一起使用。
Rails通过config / routes.rb文件处理路由,而不是依靠Web服务器来控制URL路由。该文件控制着URL的各个方面,例如规则,这些规则试图匹配请求的URL路径并确定将请求定向到何处。
Rails路由器的主要用途如下:
要了解路由,我们需要了解REST。 Rails主要将REST用于URL路由。因此,REST对于理解Rails路由很重要。它代表代表性状态转移。
REST使用多种HTTP方法来表示用户或应用程序执行的操作类型。
HTTP Method | Purpose | Example |
---|---|---|
GET | Retrieve a resource | To navigate directly to a page or by using Google, get HTTP method is used. |
POST | Create a resource | POST HTTP method was used for older web applications. |
PUT | Completely update a resource | Updating user profile on a website uses patch with web frameworks that support it. |
PATCH | Partially update a resource | It is used to only update the password for a user profile on a website. |
要创建路线,您需要将URL映射到控制器和操作。当路由器看到请求时,会将其分派到与URL匹配的控制器操作中。
如果URL看起来像这样:
/roll/1
假设路由定义为:它将映射到控制器的动作:
get 'roll/:id' => 'roll#branch'
这是简写,
get 'roll/:id' to: 'roll/branch'
控制器将为RollController ,方法将为branch 。方法前面的#是Ruby中一种表示实例方法的方法。
例:
我们来看一个例子。
创建一个学生应用程序。
rails new student
在其中创建一个名为RollController的控制器。将为动作定义路线,这些动作定义为RollController类中定义的方法。
rails generate controller RollController
打开library / config / routes.rb文件,并在其中写入以下代码。
Rails.application.routes.draw do
get 'roll/list'
get 'roll/new'
post 'roll/create'
patch 'roll/update'
get 'roll/list'
get 'roll/show'
get 'roll/edit'
get 'roll/delete'
get 'roll/update'
get 'roll/show_subjects'
end
它定义了应用程序中可用的动作以及动作的类型,例如补丁,获取和发布。
要列出应用程序中用于跟踪路由问题的已定义路由,请使用以下命令。
rake routes
输出:
资源路由允许您声明控制器的所有通用路由。它在一行代码中为索引,创建,更新,读取,删除和新操作定义了单独的路由。
浏览器通过某些HTTP方法(例如GET,POST,PUT,DELETE和PATCH)从URL请求页面。每种方法都对请求执行操作。
一个资源丰富的路由提供了HTTP动词和URL之间到控制器动作的映射。按照惯例,每个操作都会在数据库中映射特定的CRUD操作。
通过创建资源丰富的路由,可以在应用程序中公开许多控制器的助手。
您可以通过一次调用资源来定义多个路由,从而为多个资源创建路由。
单个资源是用户请求的那些资源,没有任何引用ID。例如,您可以使用单个资源来映射/ profile(而不是/ profile /:id)以显示操作。
控制器组在名称空间下组织。通常,许多管理控制器是在Admin ::名称空间下命名的。这些控制器位于app / controllers / admin目录下,可以在路由器中分组在一起。
一些资源是其他资源的子资源。嵌套路由使您可以捕获路由中的关系。
路由关注点使您可以声明可在其他资源和路由内重用的通用路由。
Rails还可以根据参数数组创建路径和URL。
您不仅限于默认的RESTful路由。您可以创建其他路线以应用于集合或集合的单个成员。
Rails为您提供了将任意URL路由到操作的便利。在这里,您必须在应用程序中分别设置每个路由,因为您不会通过资源丰富的路由自动获得路由组。