昨天談了 1~5
今天會從第六點繼續談起。
嚴格說來,6~10不能算是新手常遇到的錯誤
但只要是新手遇上了,很有可能不花個一天半天
是不可能解開的,因此我覺得相當有收錄的價值
畢竟我寫Top 10我也沒有說一定是出現頻率的Top 10
有可能是殺傷時間的程度XD
如果遇上這個,真的會一頭霧水
但如果你現在還是新手,會遇上的機率相當低了
Ruby 2.2 & Rails 3.2 有衝突
如果不小心使用了
會在一些不應該出錯的地方
莫名其妙的出錯
如果真的遇到,建議升級版本
或是錯開這個組合,基本上就沒問題了。
如果專案有做到登入功能,就一定會使用session
有時候為了除錯,會使用byebug或是pry等工具設置中斷點
但中斷點有時會將session毀損
導致整個專案無法順利繼續運作
(錯誤畫面一直找不到)
但當我第一次遇到的時候
還以為哪個地方寫錯,所以切了幾個版本
發現都沒有用
後來是聽從前輩的建議清除sessionrake db:sessions:clear
清除後就好了
在正式環境也遇上過,但是機率不高
新手剛開始使用routes時,很容易遇上找不到路徑的問題
明明寫法正確,但瀏覽器卻找不到
首先要檢查該有的參數都有傳入,確定不是因為參數為空值所導致
接著執行rake routes
查詢,確認action與helper方法沒錯
這邊介紹一個小技巧,專案到後面routes會一大篇
所以可以加上filter(過濾器)
假如要找與website相關的routes如下rake routes | grep website
這樣只會找到與website相關的內容
另一個常見的原因是沒有指定action
link_to預設是get,如果方法不同,會視為是不同的路徑
所以要確認方法有沒有正確指定
例如link_to "Foo", foo_path(foo), method: :delete
另外,routes的規則是越上面越優先
所以如果剛好有網址符合一個以上的規則,會先使用最上面的規則
這可能也不算是新手常見的問題
但是卡了我兩天三
在某些情況下,上傳可能不是用預設內建的路由
但要特別注意,get方法是無法用來上傳圖片的
因為get是透過url來傳遞參數
當圖片轉為參數時,會超過網址參數可以儲存的上限
但不會有任何錯誤訊息
所以要傳圖片或其他檔案,記得使用put或post
最後一點可能有人會覺得是臨時加上來湊數的
沒錯!!
因為我一時想不到還可以寫哪點,但這點確實是新手錯誤
大概每個Rails工程師在新手時可能至少會犯一次
在View階段跑loop時,很自然是使用ruby的開始符號
<% Model.each do |model| %>
...
<% end %>
不小心手誤就會寫成
<%= Model.each do |model| %>
...
<% end %>
多了一個等號,與一般輸出的語法搞混
這個時候雖然loop可以正常執行
但是Model內容也會在頁面上印出
如果發生這種情況,很果斷的把多出來的等號刪除吧!
十個新手常見錯誤就先介紹這邊
未來如果想不到主題,可能會依序補上11~20
希望能節省未來開發者的一些時間