Ruby: 學習 Ruby

一個全面的 Ruby 和 Rails 指南

👋 歡迎來到 Stackhero 文檔!

Stackhero 提供一個即用型的 Ruby cloud 解決方案,帶來多種好處,包括:

  • 只需一個簡單的 git push,即可在幾秒鐘內 部署您的應用程式。
  • 使用您自己的域名,並享受 HTTPS 證書的自動配置以增強安全性。
  • 享受自動備份一鍵更新,以及簡單、透明和可預測的定價,讓您安心無憂。
  • 得益於專用的私人 VM,獲得最佳的性能和強大的安全性

節省時間簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Ruby cloud hosting 解決方案!

Ruby 是一種高階的直譯式程式語言,設計以簡單和高效為目標。其優雅的語法讓開發者能以更少的代碼完成更多工作,同時支援程序式、物件導向和函數式編程範式。

Ruby on Rails,通常簡稱為 Rails 或 RoR,是一個用 Ruby 編寫的強大網頁應用框架。基於模型-視圖-控制器 (MVC) 模式,Rails 推崇約定優於配置,並強調不重複自己 (DRY) 原則,使得構建複雜的網頁應用更容易且更高效。

Rails 命令行介面 (CLI) 是管理您的 Rails 應用的強大工具。它包括創建新項目、啟動伺服器、通過控制台訪問應用,以及生成各種組件如模型和控制器的命令。以下是每個 Rails 開發者應該知道的一些基本命令:

  1. 創建一個新的 Rails 項目:

    rails new project_name
    
  2. 啟動 Rails 伺服器:

    rails server
    
  3. 打開 Rails 控制台:

    rails console
    
  4. 生成一個新的控制器:

    rails generate controller controller_name action_name
    
  5. 生成一個新的模型:

    rails generate model ModelName field:type
    
  6. 執行數據庫遷移:

    rails db:migrate
    

路由將傳入的請求連接到 Rails 應用中的適當控制器和動作。它提供了一種簡單的方法來設計您的應用的 URL 和端點。路由定義在 config/routes.rb 文件中。以下是一些常見的路由模式:

  1. 根路由:

    root 'controller_name#action_name'
    
  2. 通用路由:

    get '/path', to: 'controller#action'
    
  3. 資源路由(生成標準 CRUD 路由):

    resources :model_name
    

控制器作為模型和視圖之間的中介,接收傳入的請求並渲染適當的響應。以下示例說明了列出、顯示、創建、更新和刪除資源的常見控制器動作:

  1. 索引動作(列出所有對象):

    def index
      @objects = ModelName.all
    end
    
  2. 顯示動作(顯示單個對象):

    def show
      @object = ModelName.find(params[:id])
    end
    
  3. 新建動作(顯示新對象的表單):

    def new
      @object = ModelName.new
    end
    
  4. 創建動作(保存新對象):

    def create
      @object = ModelName.new(params.require(:model_name).permit(:field1, :field2))
      if @object.save
        redirect_to @object
      else
        render :new
      end
    end
    
  5. 編輯動作(顯示編輯現有對象的表單):

    def edit
      @object = ModelName.find(params[:id])
    end
    
  6. 更新動作(應用對現有對象的更改):

    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
    
  7. 刪除動作(刪除對象):

    def destroy
      @object = ModelName.find(params[:id])
      @object.destroy
      redirect_to model_name_path
    end
    

ActiveRecord 是 Rails 內建的物件關係映射 (ORM) 系統。它抽象了數據庫交互,讓您可以將數據庫記錄作為原生 Ruby 對象來操作。以下是一些常見的 ActiveRecord 查詢,用於獲取和操作數據:

  1. 獲取所有對象:

    ModelName.all
    
  2. 按 ID 查找對象:

    ModelName.find(id)
    
  3. 按特定字段值查找對象:

    ModelName.find_by(field: value)
    

嵌入式 Ruby (ERB) 是一種模板系統,允許您在 HTML 中嵌入 Ruby 代碼。ERB 助手是簡化視圖中常見任務的方法。以下是一些示例:

  1. 創建一個鏈接:

    <%= link_to "Link Text", path %>
    
  2. 顯示錯誤信息:

    <% @object.errors.full_messages.each do |message| %>
      <div><%= message %></div>
    <% end %>
    

遷移允許您以一致且可驗證的方式演進您的數據庫架構。它們使用 Ruby DSL,因此您不必手動編寫原始 SQL,使您的架構更改與數據庫無關。以下是如何創建和運行遷移:

  1. 創建一個新的遷移:

    rails generate migration MigrationName
    
  2. 在生成的遷移文件中 (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