在Ruby on Rails中使用AJAX的教程

2022-09-26 05:33:12 字數 3331 閱讀 8572

如果沒有聽說過 rails,那麼歡迎您外星旅行歸來,近幾年大概只有那個地方沒有聽說過 ruby on rails 了。rails 最吸引人的地方是能夠很快地建立功能完備的應用程式並執行起來。rails 為 ajax 而內建整合的 prototype.js 庫可以輕鬆快速地建立所謂的富 internet 應用程式。

本文將逐步引導您建立 rails 應用程式。然後深入分析如何利用 ajax 特性編寫從伺服器上讀寫資料的 j**ascript **。

從容起步 ajax 之旅——ajax 技術資源中心

什麼是 ajax?ajax(asynchronous j**ascript and xml)是一種程式設計技術,它允許結合 xml 和 j**ascript 用於 web 應用程式,從而打破頁面重新整理的正規化,使您的使用者快速方便的與 web 應用程式互動。

您想了解如何構建基於 ajax 的應用嗎?developerworks 中國**上有非常多的關於 ajax 的文章、教程和技巧,通過「ajax 技術資源中心」,您可以非常快捷地找到能幫助您完成與 ajax 相關的應用開發的技術參考資源。

關於 rails 的一點說明

那麼到底什麼是 rails 呢?rails 是建立在 ruby 程式語言上的一種 web 應用程式平台。ruby 存在大約有 10 年了。和 perl 以及 python 一樣,它也是一種開放原始碼的敏捷程式語言,完全支援物件導向程式設計。

rails 作為一種應用程式框架,強調使用正確的 web 應用程式模式,即模型-檢視-控制器(mvc)。在這裡,系統的模型部分通常用一組對映到資料庫表的 activerecord 物件表示。控制器部分是乙個 ruby 類,其方法可以對模型執行各種操作。檢視一般就是通過 erb 模板(erb 是 ruby 內建的文字模板包)生成的超文字標記語言**(html),形式上和 php 或 j**aserver pages(jsp)**生成的 html 類似。檢視也可以是可擴充套件標記語言(xml)、文字、j**ascript **、或者其他東西。

使用者從 rails web 應用程式請求頁面時,url 通過路由系統傳送,後者將請求傳送給控制器。控制器從模型請求資料並傳送給檢視完成格式化。

建立 rails 應用程式時,系統自動生成一些目錄和基本檔案。包括隨系統安裝的 j**ascript 檔案目錄(包括 prototype.js 庫)、檢視、模型和控制器目錄,甚至還有存放從其他開發人員那裡**的外掛程式的目錄。

開始使用 rails

建立 rails 應用程式最簡單的辦法就是使用乙個預先打好包的 rails 系統。如果平台是 microsoft? wind建議您使用 instant rails。在 macintosh 機器上我非常喜歡 locomotive 2 應用程式。這些應用程式都包括 rails 框架、ruby 語言、web 伺服器和 mysql。**了這麼多東西(確實是這樣)之後,建立 rails 應用程式僅僅是舉手之勞了。

本文將建立乙個新的菜譜應用程式,稱為recipe,只需要乙個表。清單 1 顯示了 recipe 應用程式的資料庫遷移。

清單 1. 資料庫遷移

class createrecipes < activerecord::migration

def self.up

create_table ( :recipes, :options => 'type=innodb' ) do |t|

t.column :name, :string, :null => false

t.column :description, :text, :null => false

t.column :ingredients, :text, :null => false

t.column :instructions, :text, :null => false

endend

def self.down

drop_table :recipes

endend

資料庫中只有乙個表:recipes。包含五個字段:name、description、ingredients、instructions,還有乙個欄位是 rails 基礎設施自動維護的唯一識別符號。

建立好資料庫表之後,接下來就要為它包裝乙個 activerecord 物件。該物件如 清單 2 所示。

清單 2. recipe 模型

class recipe < activerecord::base

validates_presence_of :name

validates_presence_of :description

validates_presence_of :ingredients

validates_presence_of :instructions

endactiverecord 基類負責所有基本的資料庫訪問:查詢表、插入、更新和刪除記錄。這裡只要為每個字段增加驗證就夠了。我告訴 rails 每個字段不能為空。

ajax 表單

建立 recipe 應用程式的第一步是向資料庫中新增菜譜。首先介紹在 rails 中建立基本 html 表單的標準方法。如 清單 3 中的 recipescontroller 類所示。

清單 3. recipes_controller.rb

class recipescontroller < applicationcontroller

def add

@recipe = recipe.new

if request.post?

@recipe.name = params[:recipe][:name]

@recipe.description = params[:recipe][:description]

@recipe.ingredients = params[:recipe][:ingredients]

@recipe.instructions = params[:recipe][:instructions]

@recipe.s**e

endend

end只有乙個方法 add,它首先建立乙個空的 recipe 物件。然後當客戶機發出請求時新增引數並儲存資料。

該頁面的 erb 模板如 清單 4 所示。

清單 4. add.rhml

name

description

3 %>

ingredients

3 %>

instructions

3 %>

頁面首先顯示 recipe 物件的錯誤訊息。如果使用者發布的資料沒有通過 recipe 模型物件的驗證就會設定這些訊息。然後依次為

廣告贊助

廣告贊助

最新發布

全站最新

廣而告之

© 2018-2021 程式設計客棧 贛icp備17006162號-9

贛公網安備 36110202000251號

top

在中使用SQLDMO

曾幾何時,夥伴們為的公升級傷透了腦筋.往往程式的公升級趕不上資料庫的公升級 版本控制的好,這也許不是什麼問題,但對於很大一部分中國公司來說這是無法避免的 而有些n久以前的資料庫要使用新程式的時候,資料庫的公升級簡直就是無從下手.所以對比資料庫公升級的緊要性就逐漸的凸現出來.對於表和字段的公升級按道理...

在Nginx上執行Ruby on Rails

安裝ruby export path var lib gems 1.8 bin echo export path var lib gems 1.8 bin etc bash.bashrc aptitude install ruby rubygems vim ruby rub y dev libzli...

在Ruby on Rails中實現Seaside?

ruby on rails為什麼成為最炙手可熱的web框架?到底是因為它引入了許多全新的革命性理念?或者僅僅是因為它為早已眾所周知的設計實踐帶來更為優秀的實現?這正是giles bowkett所問的第乙個問題。他通過比較了rails的檢視 控制器模式和seaside的元件及渲染方法,向大家闡述了自己...