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]}
# => [20,25, ...]
我們就能得到一整串年紀的數列了。
當然不是所有寫程式的人英文都嚇嚇叫,有強項也有弱項,假如你的英文搭配不是非常順暢,強烈建議在邊學的過程中、閱讀文件的過程中,務必要記得簡單的文法 + 關鍵字搭配,這會讓你的搜尋省下非常多時間。
記得,對新手來說,已經有成千上萬的人走過你走的路,99%的問題都有人問過了,仔細找都找得到的。
在進行Rails相關搜尋時,我強烈推薦幾個網站,只要這些網站有出現在搜尋列表中,就請仔細看一下,你要的答案極有可能就在裡面:
Stackoverflow
知識問答網站,先看問題是不是自己要的,接著直接去看答案,八九不離十是對的
apidock
看一下範例用法,如果不懂也可直接跳離,這邊很多例子都寫得很深入,初學者不一定瞬間就能讀懂
Ruby Doc
進來以後按 ctrl或command + F ,用內文搜尋的方式來找關鍵字,這邊的解說都非常完整
Rails Guide
Rails官方文件,基本上可以說所有Rails的基本常識都在這裡了,如果有出現在搜尋結果的話必定要細看
Sitepoint
常寫一些關於Ruby on Rails的技巧,有搜尋到的話通常也都找得到答案
發問技巧
不過,也是有很賽的時候,假如真的沒辦法找到解答,人生還是得要前進啊!就像交了10年的男女朋友,如果被甩了一定肝腸吋斷,但人生還是得要繼續的!這時候就請上論壇發問吧。
不過,為了最快得到最佳解答,一定要記得:這是一個彼此尊重的世界,有很多熱心的開發者無怨無悔的在為其他人解答。如果你的英文很好,我建議直接到Stackoverflow上發問。原因:
回應超快,一般來說10分鐘內就會有人解答
回答超專業,許多熱心的開發者會整理出很簡單易懂的解答。
當然有很多人是來亂的,不過請有耐心,強者是很多的,不用多久就會出現了。
撰文發問有幾個非常重要的要領。
說明使用情況
說明錯誤訊息
附上現有的檔案
說明Ruby、Rails版本、安裝的gem
如果問題很複雜,建議把整個app放在github上給連結
這幾點其實要說得完整很不簡單,我推薦一兩個比較好的問法:
Gem Minimagick安裝問題
(私心推薦,因為是我本人去解答的)
詢問method用法
以上兩個問題雖然都不是非常複雜,但也提供了很完整的資訊給其他開發者參考。
假如你撰寫英文不是非常順暢,中文平台我推薦:
Rails Fun
Rails新手村
希望大家遇到問題時都能快速找到解答喔!