Rails學習之路 Rails檔案結構與路由

2021-06-28 00:26:20 字數 2458 閱讀 7997

約定優於配置restful是ruby on rails十分推崇的哲學。在乙個預設的restful的rails專案中,使用資源和http動詞來幫助組織專案。

假如有乙個使用scaffold建立的rails專案,它的建立**像下面這樣:

rails new hello_rails

cd hello_rails/

rails generate scaffold person name:string

bin/存放執行程式的 rails 指令碼,以及其他用來部署或執行程式的指令碼。

config/設定程式的路由,資料庫等。詳情參閱「設定 rails 程式」一文。

config.ru基於 rack 伺服器的程式設定,用來啟動程式。

db/存放當前資料庫的模式,以及資料庫遷移檔案。

lib/程式的擴充套件模組。

log/程式的日誌檔案。

public/唯一對外開放的資料夾,存放靜態檔案和編譯後的資源檔案。

rakefile儲存並載入可在命令列中執行的任務。任務在 rails 的各元件中定義。如果想新增自己的任務,不要修改這個檔案,把任務儲存在 lib/tasks 資料夾中。

readme.rdoc 程式的簡單說明。你應該修改這個檔案,告訴其他人這個程式的作用,如何安裝等。

test/單元測試,韌體等測試用檔案。詳情參閱「測試 rails 程式」一文。

tmp/臨時檔案,例如快取,pid,會話檔案。

vendor/存放第三方**。經常用來放第三方 gem。

controllers/下面有people_controller.rb檔案,其中的類叫做peoplecontroller。rails約定,控制器中的命名預設為複數,如果你沒有在路由中指定其他的控制器的話。我們建立的模型叫person,所以它的複數就是people。

在控制器中有indexshowneweditcreateupdatedestroy等方法,這些方法叫做控制器的動作。

models/下面有person.rb。rails約定模型名預設是單數。開啟這個檔案後,裡面卻什麼都沒有。

class person < activerecord::base

end

這是因為在rails中,模型的內容是隨著資料庫中對應的表變化的,這一點和其他的orm略有不同。如果需要修改模型的內容,只需修改資料庫即可。而修改資料庫並不需要手工去做,rails中有遷移(migration)這個機制可以幫助我們實現。好處一是我們的修改是資料庫無關的;二是可以方便做版本控制。

開啟db/migrate/*_create_people.rb。這段**建立了一張people表:

class createpeople < activerecord::migration

def change

create_table :people do |t|

t.string :name

t.timestamps

endend

end

我們執行bin/rails db:migrate命名來執行遷移,這時rails在後台建立了people表,使用的是config/database.yaml中設定的資料庫,預設就是sqlite。

最後看一下views/目錄。在它下面除了和布局相關的layouts/,就是people/目錄。其中有以.html.erb為字尾的indexnewshowedit等檔案。這些檔案都和控制器的動作相關聯。把它們關聯在一起的就是rails的路由設定config/routes.rb

這裡面只有一條規則,

resources :people
建立了people這個資源。rails使用資源來實現rest。它實際上等價於下面的幾條規則:

或者借用ruby on rails 實戰聖經的這個**更好認識(原圖中資源為events):

(本文系原創,同步自我的)

開始學習rails

在學習了rails一段時間後,我決定寫個簡單的程式練練手。由於ruby是解釋型語言,對開發工具依賴不大,因此只用notepad 編寫ruby 用kompozer寫html頁面。我先寫後台controller和model,把對資料庫操作的語句都放在model類裡面,然而我發現activerecord實...

Rails學習筆記(二)

1 在啟動web伺服器時,可以通過加上 e選項,指定啟動時選用哪個環境 ruby script server e development test production 2 rails裡強調 慣例重用配置 從資料庫中的表,到控制器,到模型,再到檢視,命名是有關聯的!檔案的存放路徑也是有關聯的。我們在...

Rails學習筆記(四)

1 rails內建了很多驗證,在提交表單時,可以直接使用rails提供的驗證。rails中關於程度和資料庫的連線環節是在model裡的,在model裡使用validates x of可以完成常用的驗證。常用的有 1 validates presence of 用於驗證非空 輸入空格也算空 2 val...