Rails Girls App 教學
Created by Vesa Vänskä, @vesan
Translated by JuanitoFatas, @JuanitoFatas
確定妳已安裝好 Rails,尚未安裝請參考安裝指南。
認識工具
編輯器
Sublime Text、Komodo Edit、Vim、Emacs 以及 Gedit 都是妳可以用來寫程式及編輯檔案的編輯器。
終端 (Windows 叫命令提示字元)
是妳可以啟動 Rails 伺服器與執行命令的地方。
網路瀏覽器
(火狐, Safari, Chrome) 用來檢視妳的 APP。
重要
針對妳的作業系統選對的步驟很重要 —— 在 Windows 執行的命令跟 Mac 與 Linux 上的不太一樣。如果妳遇到任何問題,命令最下方可切換作業系統。
1. 建立 APP
我們即將建立一個嶄新的 Rails APP,叫做 railsgirls。
首先,打開終端:
- Mac OS X: 打開 Spotlight,輸入 Terminal 並點選 Terminal 。
- Windows: 按開始,找到命令提示字元,接著按 Command Prompt with Ruby on Rails。
- Linux (Ubuntu): 在 dash 搜索 Terminal 並點選 Terminal。
接著,輸入下面的命令到終端:
mkdir projects
ls
命令來檢查叫做 projects
的目錄有沒有產生。應該會在輸出裡看到 projects
目錄。現在你想從當下目錄進入 projects
目錄,可以執行:
cd projects
ls
命令來檢查妳現在正在一個空目錄裡。現在妳可以用下面這個命令,來建立一個新的 APP,叫做 railsgirls
:
rails new railsgirls
railsgirls
目錄下建立出一個新的 APP,所以我們可以再次使用 cd
命令切換到 Rails APP 目錄:
cd railsgirls
ls
命令,妳會看到像是 app
以及 config
這樣的目錄。可以用下面這個命令來啟動 Rails 伺服器:
rails server
mkdir projects
dir
命令來檢查叫做 projects
的目錄有沒有產生。應該會在輸出裡看到 projects
目錄。現在你想從目前的目錄進入 projects
目錄,可以執行:
cd projects
ls
命令來檢查妳現在正在一個空目錄裡。現在妳可以用下面這個命令,來建立一個新的 APP,叫做 railsgirls
:
rails new railsgirls
railsgirls
目錄下建立出一個新的 APP,所以我們可以再次使用 cd
命令切換到 Rails APP 目錄:
cd railsgirls
dir
命令,妳會看到像是 app
以及 config
這樣的目錄。可以用下面這個命令來啟動 Rails 伺服器:
ruby bin\rails server
Windows 使用者注意: 可能需要將 bin\rails
換成 script\rails
,這取決於妳安裝的 Rails 版本。
在瀏覽器打開 http://localhost:3000。應該會看到 “Welcome aboard” 的頁面,代表妳的 APP 產生成功了!
注意!在這個視窗裡看不到命令提示符號,是因為妳正在 Rails 伺服器裡。命令提示符號看起來像是:
$
>
當看不到命令提示符號的時候,妳不能執行新的命令。如果妳試著執行 cd
或其它命令都是沒有效的。要回到正常的命令提示符號:
在終端按 CTRL-C
來離開伺服器。
教練: 解釋每個命令用來在做什麼。產生了什麼檔案?伺服器的功用?
2. 建立 Idea 鷹架
我們即將使用 Rails 內建的鷹架功能來起步。讓我們可以: 列出、新增、移除、編輯、檢視想法。
教練: Rails 鷹架是什麼?(解釋鷹架命令、Model 名稱以及相關的資料庫表格、命名慣例、屬性以及型別…等等。)什麼是資料庫遷移(Migrations)?為什麼需要遷移?
rails generate scaffold idea name:string description:text picture:string
rake db:migrate
rails server
rails generate scaffold idea name:string description:text picture:string
rake db:migrate
ruby bin\rails server
到瀏覽器打開 http://localhost:3000/ideas。四處把玩看看,妳僅用幾行命令就產生出來的 APP。
玩了一陣子之後,按 CTRL-C
來再次離開伺服器。
3. 設計
教練: 講講 Rails 與 HTML 之間的關係。Views 裡面哪個部分是 HTML?哪個部分是嵌入 Ruby (ERB)?MVC 是什麼?與它們有什麼關係?(模型與控制器負責產生 HTML Views)
妳的 APP 現在看起來不太漂亮。讓我們來給她打扮打扮。我們會使用 Twitter Bootstrap 專案來非常簡單的幫 APP 變漂亮。
在編輯器裡打開 app/views/layouts/application.html.erb
,找到這行
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
在這行上面加入
<link rel="stylesheet" href="http://railsgirls.com/assets/bootstrap.css">
並將這行換成
<%= yield %>
這個
<div class="container">
<%= yield %>
</div>
讓我們也加入導覽條與 footer 到頁面吧。在同一個檔案裡,<body>
標籤下面,加入
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="/">The Idea app</a>
<ul class="nav">
<li class="active"><a href="/ideas">Ideas</a></li>
</ul>
</div>
</div>
</div>
以及在 </body>
之前,加入
<footer>
<div class="container">
Rails Girls 2013
</div>
</footer>
現在讓我們也來變一下 ideas 表格的風格。打開 app/assets/stylesheets/application.css
到最下面加入
body { padding-top: 100px; }
footer { margin-top: 100px; }
table, td, th { vertical-align: middle !important; border: none !important; }
th { border-bottom: 1px solid #DDD !important; }
現在確保妳已存檔,並將瀏覽器重新整理,來看看什麼被改變了。妳也可以繼續調整 HTML 與 CSS。
教練: 稍微講講 CSS 與 layout。
Step 4: 加入圖片上傳
我們需要安裝一點軟體,讓我們可以在 Rails 裡上傳檔案。
在專案目錄下,用編輯器打開 Gemfile
,找到這行,在這行下面:
gem 'sqlite3'
加入
gem 'carrierwave'
教練: 解釋什麼是函式庫,為什麼函式庫很有用。描述一下什麼是開源軟體。
在終端裡,執行:
bundle
現在我們可以來產生處理上傳的程式碼。在終端裡,執行:
rails generate uploader Picture
現在妳需要在終端裡 重新啟動 Rails 伺服器的進程。
在終端裡按下 CTRL-C
來離開伺服器。一旦伺服器停止,妳可以按上,來獲得上個輸入的命令,接著按 enter 來重新啟動伺服器。
為什麼需要重新啟動伺服器呢?因為 APP 需要載入剛剛加入的函式庫。
打開 app/models/idea.rb
並在這行下面
class Idea < ActiveRecord::Base
加入
mount_uploader :picture, PictureUploader
打開 app/views/ideas/_form.html.erb
並將這行
<%= f.text_field :picture %>
改成
<%= f.file_field :picture %>
在妳的瀏覽器裡,新增一個想法吧,順便貼張圖片。當你上傳一張圖片,它看起來不像圖片,因為它顯示的是圖片的路徑,所以讓我們讓圖片顯示吧。
打開 app/views/ideas/show.html.erb
並將這行
<%= @idea.picture %>
改成
<%= image_tag(@idea.picture_url, :width => 600) if @idea.picture.present? %>
現在重新整理妳的瀏覽器,看看發生了什麼?
教練: 稍微講講 HTML。
Step 5: 調整路由
如果妳試著開啟 http://localhost:3000,它仍顯示 “Welcome aboard” 頁面。讓我們來把這頁導到 ideas 頁面。
打開 config/routes.rb
在第一行後面,加入
root :to => redirect('/ideas')
將 public/
目錄下的 index.html
刪除。
用瀏覽器打開網站的根目錄 (root path,也就是 http://localhost:3000/),看看有沒有改變。
教練: 講解路由,包含路由順序以及路由與靜態檔案的關係。
下一步?
- 使用 HTML & CSS 加入設計。
- 加入評分功能(ratings)
- 使用 CoffeeScript (或 JavaScript)加入互動。 + 加入圖片大小轉換使加載圖片更快完成。
其它指南
- Guide 1: 加入評論功能 by Janika Liiv
- Guide 2: 把 APP 放到 Heroku by Terence Lee
- Guide 3: 給上傳的圖片建立縮圖 by Miha Filej
- Guide 4: 使用 HTML 與 CSS 添加設計 by Alex Liao
- Guide 5: 用 Devise 加入驗證功能 by Piotr Steininger