Ruby on Rails從零開始自學,要用哪一份教材呢?

Adler @ 2014-10-03


近年RoR開始走紅,有非常多教學資源可以利用,本人也是先前某天靈光一閃,開始自學的旅途。不過網路上這麼多教學資源,到底應該從哪一個教材上手呢?這個問題就非常見仁見智了。

必備條件

●知道HTML網頁和CSS長什麼樣 ●知道JavaScript的運作邏輯

有發現為何我不直接寫『會HTML、JavaScript』嗎?因為在寫Rails時,唯一需要動手寫的只有HTML,Javascript和CSS不會沒關係。不過,就像跑鐵人三項一樣,寫Rails寫得很好,代表你騎腳踏車騎得很棒;不會JavaScript就彷彿不會游泳一樣,平常不游沒關係,等真的要下水比賽的時候就知道有多麻煩了。所以...遲早還是要學啦!

以下介紹幾個我參考的教材,你可能會覺得『騙笑ㄟ你最好是這些教材全部都從頭到尾看過!』不好意思,本人資質駑頓,不管哪一個教材都有卡關,而且是卡到比內褲卡屁縫還更緊的那種,只能先換教材從頭看起;經過無數次撞牆和重看之後,才偶爾有靈光一閃,突破難關。所以,以下絕對都是我讀過的心得,沒讀過的我就不放進來了。

Ruby基礎


Code Academy

評:按部就班學

互動式學習,會學到許多基本的用法,例如四則運算、if..else、迴圈等等,跟其他語言入門很像,主要教語法。

系統設計的很好,非常按部就班,每一個章節的解說都很清楚,也會跟你說錯在哪裡。對有熱情的學生來說可以學得很快,但就少了些爆點,比較像是照表操課,把東西學起來而已,沒有太多趣味。

Code School (Try Ruby)

評:簡單易懂

互動式學習,正如其名『Try』,長度不長,但整體而言感覺跟code Academy很像,就是把基本的語法學起來。教學時語氣有比較活潑一點。

以上兩個教材...其實不用花太多時間,把主要的東西記得就好,因為到了Rails,根本就是另外一個世界,等Rails的東西熟了以後,自然就會需要回頭來把Ruby的東西學起來。例如需要把array組成hash的時候,這種比較跟基礎有關係的東西,才會回頭來看Ruby基礎。

Rails入門


在說明Rails教材之前,有一個很重要的觀念要釐清:

Rails有太多東西不能用三言兩語講清楚,所以建議初學者要先把東西死記起來,未來再理解,這才是最快的學習方法。如果硬要把所有細節都了解再繼續往下學,很容易鑽牛角尖繞不出來,進度也會太慢。我的經驗:如果真的腦袋打結,就換教材,從頭開始看;等過了兩三天,再回頭看原本教材卡關的地方,就有可能暢通了,跟便秘暢通一樣。

入門者一定要先把這句話記起來,學Rails要有耐性,每個人剛學都是髒話滿天飛,如果真的不行,就上網或到聚會問吧!

Code School (Rails for Zombies)

評:跳躍式,不建議直接入門

影片教學外加互動式學習,並沒有從基礎開始講,一開始簡單講解後,直接帶到model的操作上,也就是如何在model中操作hasmany、belongsto、find等關係,這是我第一個接觸的Ruby on Rails教材,但說實在,根本就聽不懂。

model講完以後會依序講controller和view,一方面會說明MVC三者之間如何運作,一方面也把各個method教下去。但有一個重點,就是我在學習時根本抓不到一個大概,只在那邊學<%= yield %>是做什麼用的,非常分散的資訊,很難結合在一起。假如真的很有耐心看完了,可能也不一定能把MVC所有用法和關係串起來。

由於是免費教材,也沒有時間限制,所以建議在其他教材學到一個段落以後再回來看,會瞬間懂。

Rails 101 & Rails 101 S

評:第一遍就看得懂的話,可以上哈佛

Rails101是一本書,我真的得說,這本是所有教材裡面步調最快的,完全符合作者xdite本人的教學模式。剛開始講CRUD時,大概還知道他跟http request之間的關聯是什麼,但因為我過去根本沒有網路通訊的基礎,偏偏他又講很多網路程式的東西,例如RESTful設計風格,這些東西對我來說跟天書一樣。

『步調快不好嗎?剛不是還嫌別人很慢?』步調快當然好,但很多東西如果不講清楚,其實很難繼續下去,例如在建構CRUD的章節,view裡頭有一段code是:

<% @groups.each do |group| %> 
    <tr>
      <td>
        <%= link_to(group.title, group_path(group)) %>
      </td>
      <td>
        <%= group.description %>
      </td>
    </tr>
<% end %> 

像我真的沒辦法在第一時間就了解@groups.each do |group|這句話的意思,更沒辦法了解link_to(group.title, group_path(group))是什麼意思。為什麼.each後面還有一個|group|?為什麼link_to的連結group_path後面還要一個括弧?為什麼groups變數前面要加上@符號?

腦袋裡有太多東西在打轉,當下我就放棄了,先轉向其他教材。後來是等我把Treehouse整個課程都結束,再回頭看時,才真正了解這些內容的意義。

最後血淚補充,我是在3月初的時候買這本書,花了12美金,然後半個月以後他就從此變成免費了。Rails101 S是將這本書寫得更簡潔易懂的部落格文章版本。

Michael Hartl

評:超慢步調,超詳細講解

真的詳細到一個爆炸,還牽扯到很多不是Rails的東西,對於像我這種只看重點的人,其實很容易看不下去。Rails就是Rails!為什麼要扯一堆有的沒的!不過,如果你真的很有耐性,強烈建議這本,整個讀過以後會非常了解,還包括了基本的測試(testing)寫法。

Rails 實戰聖經

評:很詳細,但後來比較像操作手冊

剛開始Part.1時很不錯,但到Part.2開始,變成比較像是Rails整體架構的說明書,而不是一步一步建立應用程式的教學,建議從Part.2開始就可以換教材了,這個比較像是工具書的用法,如果對某些概念有疑問時可以來參考。

Treehouse

評:稍貴,但最易入門

每個月25美元的價格,影片教學無限看。聽起來有點貴,但我覺得這個教材是最簡單易懂的。雖然還是有許多無法解釋、快速帶過的地方,但整體來說上課的感覺比較舒服,步調稍緩,演練起來也沒那麼容易卡關。我選擇的課程是Building a Simple Ruby on Rails Application,這個課程完整上完,基本上其他教材就比較能讀懂了。

唯一的缺點是他其他教材也是相同步調,對我這種沒耐性的人來說,就沒有辦法再配合上。英文能力不ok也沒關係,看著他打什麼就跟著打什麼就好,他也有transscript,可以丟到Google翻譯去查。還有一個問題,就是他使用的是Rails 3.2,跟4.0以後的版本稍有差距,建議卡關的時候看看他的討論區,會有解答。


以上是我使用的教材,希望各位新手都學習順利囉!如果遇到難解問題,請參考前一篇『搜尋和發問技巧』,或是直接到Rails新手村聚會跟大家討論喔!