rails路由

什麼是路由?
路在何方,路在腳下。但在web開發中,我們經常會涉及到“路由”的概念,這也是每一個web框架最核心的功能之一,官方解釋太過生硬,其實現在web框架路由的概念基本可以簡化爲:路由就是URL到函數的映射。

rails路由的作用?
請求首先發送給路由,然後由路由確定應該把請求發送給誰,以及如何解析。在這個階段,路由會在控制器中找出負責處理請求的動作交互,也可以調用其他動作。最後,動作會向視圖提供必要的信息,經視圖渲染後呈現給用戶。

rails中的路由的優點?
rails有兩個原則,其中一個就是約定大於配置,所以rails中的路由的約定也是嚴格基於RESTFful風格的。當用戶在頁面進行請求時其實是在操作一些資源,而同一個資源可以有不同的請求方法(get、post、put、patch、delete)分別對資源進行CURD操作。

例子
說了那麼多,沒有一個場景,理解也是很片面的,所以這裏給大家一個簡單的例子(這裏默認裝了rails,如果沒有請自行百度)。

在我們創建了一個新的項目時,我們可以在我們的config/router.rb裏添加如下代碼:

*我們添加一個資源時,資源一般都是複數形式

在這裏插入圖片描述
然後在我們終端執行:rails routes就會看到下面這張圖
在這裏插入圖片描述

第一列對應的是請求對應的控制器中的動作,
第二列是我們超鏈接的鏈接前綴,
第三列是我們的請求方法,
第四列是生成的url

第一行:get請求方法
這裏的請求是get,然後超鏈接的鏈接前綴是articles,這樣rails會自動將我們的請求綁定到controller控制器中的index動作,然後跳轉到對應的index.html.erb這個視圖上。對應產生的url爲: /articles
代碼:

<%= link_to '訪問的是index動作對應的index.html.erb視圖', articles_path %>

第二行:post請求方法
post請求一般都會在表單裏面對數據進行提交,從路由圖可以看出對應的是控制器中的create動作。post方法一般用於提交數據,跳轉頁面並不是他的主要用途,所以url可以看情況指定,這裏指定提交後跳轉到主頁面。
代碼:

<%= form_for :article, url: articles_path do |f|%>
<% end %>
// :article 是表單創建或者編輯的對象名字

第三行:get請求
一般用於展示創建資源的操作界面,我們要創建一個資源,就必須要有一個頁面去承載這個操作,我們通常會在諸如一個彈窗或者一個新的頁面去讓用戶有創建資源的操作。
這裏請求方法是get,然後前綴是new_article,我們就可以知道對應控制器中的new動作,對應的視圖是new_html.erb,然後生成的url爲 /article/new
代碼:

<%= link_to '添加資源', new_article_path %>

第四行:get請求
一般用於展示編輯資源的操作界面,與第三行的作用類似
這裏請求的依然是get,然後前綴是edit_article,我們就可以知道對應的是控制器中的edit動作,對應的視圖是edit_html.erb,然後生成的url爲:/article/:id/edit
代碼:

<%= link_to '編輯資源',edit_article_path(:id) %>
//路徑裏需要傳參數

第五行:get請求
這裏主要用於顯示單個資源的詳情頁面,超鏈接前綴是article,可以看出對應的是控制器中的show這個動作,與之對應的是show.html.erb這個試圖文件,生成的url爲: /article/:id
代碼:

<%= link_to "展示單個資源", article_path %>

第六行:patch請求
作爲一個http的一個擴展方法,在web性能高效的潮流中,patch也是用的越來越多,它主要是更新局部字段。
patch請求方法沒有超鏈接前綴,它對應的是控制器中的update方法。
代碼:

<%= form_for :article ,method: 'patch' , raticles_path do |f| %>

第六行:patch請求
作爲一個http的一個常用方法,在web性能高效的潮流中,put也是用的越來越多,它主要是更新局部字段,與post的區別就是post提交一百次,會與一百次數據,put提交一百次,只有一個數據。
put請求方法沒有超鏈接前綴,它對應的是控制器中的update方法。
代碼:

<%= form_for :article ,method: 'put' , raticles_path do |f| %>

第七行:delete請求
delete請求同樣沒有超鏈接前綴,對應的是控制器中的destroy動作
代碼:
<%= link_to “刪除指定資源” , :confirm =>“Are you sure”, :method=>:delete %>

到這裏rails框架的基本路由和與之對應的請求方法也簡述了一遍,雖然理解起來不難,但是在開發過程中,這個是非常靈活的,我們需要不斷學習,不斷進步,才能成爲一個合格的開發人員。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章