Alex Liang

[Rails] MVC設定基本流程

rails是使用MVC架構的framework。學習一段時間後,更能體會這種架構開發web application帶來的方便。

所謂的MVC,指的是Model(資料操作)、View(前端效果)和Controller(流程控制)。

剛開始接觸時,對MVC的控制會感到一頭霧水,這裡以rails 101為範本做簡單的流程介紹:

  1. 設定routing,讓http request到對應的controller action執行

    config/routes.rb
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Rails.application.routes.draw do
    root "groups#index"
    resources :groups
    end
    ```

    2. 在controller新增action,例如討論版的首頁就需要建立index action
    ``` ruby app/controllers/groups_controller.rb
    class GroupsController < ApplicationController
    def index
    @group = Group.all
    end
    ...
    end
  2. 設定model,思考需要哪些資料欄位以及和其它資料表的關係。例如group和post有has_many的關係

    app/models/group.rb
    1
    2
    3
    4
    5
     class Group < ActiveRecord::Base
    validates :title, presence: true #表示title這個欄位必填
    has_many :posts, dependent: :delete #當group被刪除時,底下的post也得刪除
    ...
    end
  3. 設定view。如果需要使用URL helper,得思考request要發到哪個action,例如:
    ruby app/views/groups/index.html.erb <div class="col-md-12"> <div class="group"> <%= link_to("New group", new_group_path, class: "btn btn-primary pull-right") %> </div> ...
    使用者點擊”New group”這個按鈕時,會發一個request至new這個action並將頁面轉到/groups/new.html

以上是簡單的流程。這四個步驟會依功能需要增加複雜度,開始實作前也得思考model間的關係。