日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ruby on Rails:控制器纵览

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ruby on Rails:控制器纵览 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在一個基于MVC的Web應用程序中,應用程序邏輯以及數據的存取是由MVC中的C,也就是控制器來完成的。因此,深刻地理解MVC框架所提供控制器對于開發一個高效、可升級、穩定的應用程序是十分必要的。RoR也不例外。

  RoR中所提供的控制器叫動作控制器(ActionController)。本文將主要討論動作控制器所提供的幾種服務,以及如何使用動作控制器。

  什么是動作控制器

  在RoR中,動作包(Action Pack)是這個框架的核心。它包括兩部分,動作視圖和動作控制器。動作包的一個特點是除了Web程序,不能使用在其它類型的程序中。下面讓我們看看在我們通過瀏覽器鍵入一個URL后,如http://localhost:3000/demo/say/hello,都發生了什么。下面是在RoR中處理動作的步驟:

  1. RoR首先裝載了位于app/controllers目錄中的say_controller.rb文件。這個文件只被裝載一次。

??? 2. 然后 RoR建立了類SayController的實例。

  3. 一旦SayController類被實例化,RoR就會在app/helpers中查找say_helper.rb文件。如果這個文件存在,它就會被裝載,并且這個文件將會和SayController對象混合。這就意味著在SayController對象中可以直接訪問SayHelper中的方法。

  4. 最后在app/models中查找say.rb文件,如果存在,裝載它。

  到現在為止,我們已經對應用程序的初始化過程非常清楚了,接下來讓我們繼續看看動作控制器所提供的服務。下面是RoR所提供的服務列表:

  1. URL映射

  2. 會話跟蹤

  3. 過濾和驗證

  4. 緩沖

  現在又帶來一個問題。這些服務為什么由控制器來提供。當然,答案也很簡單,這是因為控制器介于數據和應用程序之間,因此,它可以監視數據的存取,并且可以根據需要對URL進行映射。因此,這些服務理所當然由控制器來提供。下面我們將詳細討論控制器提供的這些服務。

  1. URL映射

  當我們在瀏覽器中輸入http://localhost:3000/admin/show時,會顯示相應的內容。但你也許會有疑問,RoR是如何將URL鏈接映射成相應的類或方法呢?事實上,這些映射的代碼都被寫在了config目錄中的routers.rb中。下面是這個文件的部分代碼。

ActionController::Routing::Routes.drawdo|map|
map.connect ':controller/service.wsdl', :action => 'wsdl'
map.connect ':controller/:action/:id'
end

  動作控制器通過它的映射組件將來自外部請求的URL和內部的應用程序連接了起來。上述代碼的第3行就是完成這個功能的。在這行語句中,map.connect的連接字符串是":controller/:action/:id"。請求的URL只有匹配這個字符串才能被接受。對于一個URL請求來說,它可以被RoR分成三部分:

  a. 第一部分是模式字符串中的:controller部分。

  b. 第二部分是模式字符串中的:action部分。

  c. 第三部分是模式字符串中的:id部分。

  根據上面所描述的三部分,URL:http://localhost:3000/demo/admin/show/1/將被映射成以下三部分:

:controller : 'admin',
:action :'show',
:id :1

  根據以上的三部分,RoR將調用admin控制器的show方法,并將參數1傳到show方法中。因此,我們可以看出,RoR在其中做了很多本應該由我們做的事件。因此,RoR是一項十分強大技術。

轉載于:https://www.cnblogs.com/xiaoman_890/archive/2009/05/04/1448949.html

總結

以上是生活随笔為你收集整理的Ruby on Rails:控制器纵览的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。