Ruby: 學習 Ruby
一個全面的 Ruby 和 Rails 指南
👋 歡迎來到 Stackhero 文檔!
Stackhero 提供一個即用型的 Ruby cloud 解決方案,帶來多項好處,包括:
- 只需一個簡單的
git push,即可在幾秒鐘內部署您的應用程式。- 使用您自己的域名,並享受 HTTPS 證書的自動配置以增強安全性。
- 享受自動備份、一鍵更新,以及簡單、透明且可預測的定價,讓您安心無憂。
- 憑藉專用的私人 VM,獲得最佳的性能和強大的安全性。
節省時間並簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Ruby cloud hosting 解決方案!
Ruby 和 Ruby on Rails
Ruby 是一種高階、直譯的程式語言,設計上強調簡單性和生產力。其優雅的語法讓開發者能以更少的程式碼完成更多工作,同時支援程序式、物件導向和函數式編程範式。
Ruby on Rails,通常簡稱為 Rails 或 RoR,是一個用 Ruby 編寫的強大網頁應用框架。基於模型-視圖-控制器 (MVC) 模式,Rails 推崇約定優於配置,並強調不重複自己 (DRY) 原則,使得構建複雜的網頁應用更簡單且高效。
Rails 命令行介面 (CLI)
Rails 命令行介面 (CLI) 是管理 Rails 應用的強大工具。它包含創建新專案、啟動伺服器、通過控制台訪問應用,以及生成各種組件如模型和控制器的命令。以下是每個 Rails 開發者應該知道的一些基本命令:
-
創建一個新的 Rails 專案:
rails new project_name -
啟動 Rails 伺服器:
rails server -
打開 Rails 控制台:
rails console -
生成一個新的控制器:
rails generate controller controller_name action_name -
生成一個新的模型:
rails generate model ModelName field:type -
執行資料庫遷移:
rails db:migrate
Rails 路由
路由將傳入的請求連接到 Rails 應用中的適當控制器和動作。它提供了一種簡單的方法來設計應用的 URL 和端點。路由定義在 config/routes.rb 文件中。以下是一些常見的路由模式:
-
根路由:
root 'controller_name#action_name' -
通用路由:
get '/path', to: 'controller#action' -
資源路由(生成標準 CRUD 路由):
resources :model_name
Rails 控制器動作
控制器作為模型和視圖之間的中介,接收傳入的請求並渲染適當的響應。以下示例說明了列出、顯示、創建、更新和刪除資源的常見控制器動作:
-
索引動作(列出所有對象):
def index @objects = ModelName.all end -
顯示動作(顯示單個對象):
def show @object = ModelName.find(params[:id]) end -
新建動作(顯示新對象的表單):
def new @object = ModelName.new end -
創建動作(保存新對象):
def create @object = ModelName.new(params.require(:model_name).permit(:field1, :field2)) if @object.save redirect_to @object else render :new end end -
編輯動作(顯示編輯現有對象的表單):
def edit @object = ModelName.find(params[:id]) end -
更新動作(應用對現有對象的更改):
def update @object = ModelName.find(params[:id]) if @object.update(params.require(:model_name).permit(:field1, :field2)) redirect_to @object else render :edit end end -
刪除動作(刪除對象):
def destroy @object = ModelName.find(params[:id]) @object.destroy redirect_to model_name_path end
Rails ActiveRecord 基本查詢
ActiveRecord 是 Rails 內建的物件關係映射 (ORM) 系統。它抽象了資料庫交互,讓您可以將資料庫記錄作為原生 Ruby 對象來操作。以下是一些常見的 ActiveRecord 查詢,用於獲取和操作數據:
-
獲取所有對象:
ModelName.all -
通過 ID 查找對象:
ModelName.find(id) -
通過特定字段值查找對象:
ModelName.find_by(field: value)
Rails ERB 助手
嵌入式 Ruby (ERB) 是一種模板系統,允許您在 HTML 中嵌入 Ruby 代碼。ERB 助手是簡化視圖中常見任務的方法。以下是一些示例:
-
創建一個鏈接:
<%= link_to "Link Text", path %> -
顯示錯誤信息:
<% @object.errors.full_messages.each do |message| %> <div><%= message %></div> <% end %>
Rails 遷移
遷移允許您以一致且可驗證的方式演進資料庫架構。它們使用 Ruby DSL,因此您不必手動編寫原始 SQL,使您的架構更改與資料庫無關。以下是如何創建和運行遷移:
-
創建一個新的遷移:
rails generate migration MigrationName -
在生成的遷移文件中 (
db/migrate/):class MigrationName < ActiveRecord::Migration[6.0] def change add_column :table_name, :column_name, :type remove_column :table_name, :column_name end end