在來我們要來處理如果表單內的內容有漏填或者是填寫不正確我們要來如何處理這些問題。
首先我們要在model加入驗證機制,加入validates這個指令並驗證:name這個欄位,且presence設定為true。
好了之後我們回到controllers在else的地方加入轉址的方法。
我們再回到新增資料畫面,我們在這邊刻意把name的欄位刻意不填,接下來按送出,至時候你會發現畫面回到新增資料畫面,看樣子是成功了,但這邊有一個問題,如果你的表單欄位很多的話使用者一填錯資料送出,結果回到這個畫面又要全部重填會很氣吧。
所以我們這邊不能用redirect_to這個方法,我們應該改用render這個方法。
這時候你在回新增資料的畫面在刻意把name忽略不打,並送出資料,這時候你會發現你原本打的資料都還在,只要把漏打的name打進去就可以送出資料了。
這邊要注意一個地方就是render :name這個方法是去借new的畫面並重新渲染一次,由於form_for這個方法會帶一個實體變數@candidate這個東西進去。
巧合的是我們在controllers也剛好有一個@candidate的實體變數,而這個實體變數裡面的值剛好就是我們剛剛在新增資料畫面的那些資料,所以我們才可以不用在重新打一次是不是很方便???
剩下的一些問題,由於日後再做專案時不可能都是這們巧合可以用同一個實體變數,所以我們後面會來解決這個問題,下一篇我們會用css來處理這個畫面,讓資料輸入失敗時的提示更加的明顯。