安裝 gem install rails
檢查 rails -v
查詢安裝路徑 which rails
開新專案 rails new 專案名
執行 server: $ bin/rails server
or$ rails s
Rails 常用快速鍵
原本的指令 | 簡寫 | 用途 |
---|---|---|
bin/rails generate | bin/rails g | 用來產生各種需要的檔案,例如 scaffold、controller、model 等等 |
bin/rails destroy | bin/rails d | 可刪除產生器所產生的檔案 |
bin/rails server | bin/rails s | 啟動 Rails 伺服器,讓你可以檢視目前專案的成果 |
bin/rails console | bin/rails c | 類似 Ruby 的 IRB 介面,但是有載入整個 Rails 專案的環境,可以在這裡直接操作資料 |
bin/rails dbconsole | bin/rails db | 直接進到資料庫裡,使用 SQL 語法對資料庫進行存取 |
bundle install | bundle | 安裝套件 |
rake test | rake | 執行測試 |
ERb 語法標籤
<% %>
不會輸出內容<%# %>
註解
yield
<%= yield :my_title %>
將這個坑標記為 my_title
<% provide :my_title, "填坑內容" %>
<%= content_for :my_title do %>
填坑內容
<%= end %>
CRUD = Create, Read, Update, Delete
1. 新增 Route
在對應的 controller 加入 resources :name
建立8種對應的路徑
執行 rails routes
查看路徑清單。
2. 新增 Controller
3. 新增 Action
4. 新增 Model
新增完畢後執行 db:migrate
轉換成真正的表格。
Add new value/column
新增一欄資料:gender, type:integer 到 Candidates 內
⇒ rails generate migration AddGenderToCandidates gender:integer
執行db:migrate
Models 之間的連動
5. 新增 VIEWS.html.erb
Default layout:
- partial render 相關:
陣列型Collection
如果是陣列的資料,像是tr或li這類會一直重複的Template元素,我們可以使用collection參數來處理,例如像以下的程式:
<% @people.each do |person| %>
<%= render partial: "person", :locals { :person => person } %>
<% end %>
我們可以改寫成使用collection參數來支援陣列形式:
<%= render partial: "person", collection: @people %>
CRUD
Read
Search by id
Candidate.find_by(id: params[:id]) # return nil if no result.
or
Candidate.find(params[:id]) # ActiveRecord error, if no result (we can rescue for).
all, where, order, limit, count, average, sum, maximum, minimum
Candidate.where("age > 18", gender: "female")
Candidate.order(age: :desc) # 按照年齡大小,由大排到小
Candidate.average(:age).to_f
Update
save, update, update_attribute, update_attributes(equals "update")
Destory
delete, destory
Candidate.destory_all("age < 18")
資料庫
Migration
- 執行遷徙:
bin/rails db:migrate
- 退回遷徙:
bin/rails db:rollback
因為會刪除原有資料,故使用上需注意風險,建議直接新增一個Migration 做修正 - 檢視遷徙狀態:
bin/rails db:migrate:status
( UP 表示已執行過)