iT邦幫忙

DAY 2
1

Ruby on Rails 花招百出系列 第 3

Rails遇上問題,該如何搜尋及發問呢?

遇到困難了!思索半天也找不到答案該怎麼辦?腦袋打結時,最好直接用搜尋和發問的方式,從外部取得解答最快速。尤其Ruby on Rails的開發對新手來講充滿許多陌生的知識,有些從PHP或Java轉過來的老手也不一定能在第一時間就抓到要領。 像本人過去只學過javaScript、HTML、CSS,對伺服器端執行的語言完全不熟,剛開始學時,根本就是人間煉獄......在這邊提供一些個人經驗,希望從頭開始學習Rails的朋友在遇到困難時,都能夠快速尋找到答案喔!

搜尋技巧

有一件事情務必要說明,那就是在Ruby on Rails的世界裡,目前英文的資源是遠比中文豐富的,也就是說不管是搜尋還是發問,用英文能找到的答案,絕對比用中文來找答案要來的快速、答案也更多。 當然程式語言本身是英文的也佔了很大一個原因,不過跟C、Java、Objective C等語言相比,中文的資源還是相對很少。如果你的英文不佳,在閱讀文件、聽課時,務必把常用的關鍵字都記得,因為只要關鍵字都記得,搜尋時就能加快非常多速度。 舉一個簡單的Google例子: 如果今天遇到我要在Ruby當中把物件(object)或雜湊(hash)轉換為陣列(array),搜尋:

ruby 物件 陣列

可以看到搜尋結果大多是說明文件,很棒,但有一個小問題,就是這些文件都是非常完整的,我們點選進入這些文件中還要另外再進行搜尋才能找到答案。反之,如果我們使用英文搜尋:

ruby obj to array

映入眼簾的第兩個解答都是Stackoverflow,這個就是我們能夠快速找到答案的方法,因為Stackoverflow這類型的網站會完全專注在特定的領域上,對於簡單的問題,根本不用看題目寫什麼,直接看答案即可。因為這類型的問題,都會很簡單明瞭的把正確解答放在最前面,因此只要看答案的第一段,通常就可以找到要的解答。例如Stackoverflow上的這篇,在解答的地方直接點出,只要用

hash.to_a

的方法,就可以將一個object或hash轉換為array。 『靠夭,這種例子也太廢,能不能舉個稍微複雜的例子?』好,例如一個陣列裡面有一堆hash,長這樣:

array = [{:name => "John", :age => 20, :height => 180}, {:name => "Sam", :age => 25, :height => 167}, ... ]

假如要只取這些人的age變成一個陣列,而我忘記怎麼處理了,要如何搜尋呢?嗯...這時候需要翻譯一下,搜尋:

ruby get hash key to array

這時浮現眼前的其中一個結果是apidock。apidock這個網站常常是寫得要不是簡單易懂,不然就是晦澀難懂,非常極端,不過在這裡出現了一個簡單易懂的關鍵字:map,因此我們知道利用map可以寫出一個答案是:

array.map {|hash| hash[:name]}

我們就能得到一整串年紀的數列了。 當然不是所有寫程式的人英文都嚇嚇叫,有強項也有弱項,假如你的英文搭配不是非常順暢,強烈建議在邊學的過程中、閱讀文件的過程中,務必要記得簡單的文法 + 關鍵字搭配,這會讓你的搜尋省下非常多時間。 記得,對新手來說,已經有成千上萬的人走過你走的路,99%的問題都有人問過了,仔細找都找得到的。 在進行Rails相關搜尋時,我強烈推薦幾個網站,只要這些網站有出現在搜尋列表中,就請仔細看一下,你要的答案極有可能就在裡面:

Stackoverflow 知識問答網站,先看問題是不是自己要的,接著直接去看答案,八九不離十是對的

apidock 看一下範例用法,如果不懂也可直接跳離,這邊很多例子都寫得很深入,初學者不一定瞬間就能讀懂

Ruby Doc 進來以後按 ctrl或command + F ,用內文搜尋的方式來找關鍵字,這邊的解說都非常完整

Rails Guide Rails官方文件,基本上可以說所有Rails的基本常識都在這裡了,如果有出現在搜尋結果的話必定要細看

Sitepoint 常寫一些關於Ruby on Rails的技巧,有搜尋到的話通常也都找得到答案

發問技巧

不過,也是有很賽的時候,假如真的沒辦法找到解答,人生還是得要前進啊!就像交了10年的男女朋友,如果被甩了一定肝腸吋斷,但人生還是得要繼續的!這時候就請上論壇發問吧。 不過,為了最快得到最佳解答,一定要記得:這是一個彼此尊重的世界,有很多熱心的開發者無怨無悔的在為其他人解答。如果你的英文很好,我建議直接到Stackoverflow上發問。原因: 1. 回應超快,一般來說10分鐘內就會有人解答 2. 回答超專業,許多熱心的開發者會整理出很簡單易懂的解答。 3. 當然有很多人是來亂的,不過請有耐心,強者是很多的,不用多久就會出現了。 撰文發問有幾個非常重要的要領。

  1. 說明使用情況

  2. 說明錯誤訊息

  3. 附上現有的檔案

  4. 說明Ruby、Rails版本、安裝的gem

  5. 如果問題很複雜,建議把整個app放在github上給連結

這幾點其實要說得完整很不簡單,我推薦一兩個比較好的問法:

Gem Minimagick安裝問題 (私心推薦,因為是我本人去解答的)

詢問method用法

以上兩個問題雖然都不是非常複雜,但也提供了很完整的資訊給其他開發者參考。 假如你撰寫英文不是非常順暢,中文平台我推薦:

Rails Fun

Rails新手村

希望大家遇到問題時都能快速找到解答喔!

本文同步刊登於我的部落格:特快車


上一篇
Rails遇上問題,該如何搜尋及發問?
下一篇
Ruby on Rails從零開始自學,要用哪一份教材呢?
系列文
Ruby on Rails 花招百出32

尚未有邦友留言

立即登入留言