練習 - 006 (資料清洗 data cleaning)
首先在CandidatesController
的create
action,我們宣告一個變數clean_params
承接清洗過的資料。
1 | def create |
打開瀏覽器來看看
首先各個欄位填入資料
按下送出,存檔。直接跳回後選人的列表頁。
這樣表示是有資料 寫入成功 了,才會跳回候選人列表頁面。
要如何確認呢?
我們可以透過終端機的中控台模式來查看
在終端機輸入rails c --sandbox
表示打開 rails console 沙盒模式
接著入輸入Candidate.all
。這個指令可以show出,現在Candidate表單裡面所有的資料。
可以發現有一包陣列,包含了id, name, party, politics, votes
等欄位。
就是剛剛我們在瀏覽器上輸入的那筆資料。
但是,到這邊可以發現好像缺少點什麼,資料是成功寫入資料庫,但直接跳回候選人列表的頁面,這樣的使用者體驗不太優。似乎少了點提示,讓使用者知道到底有沒有投票成功。所以我們就來增加這個功能吧!!!
回到CandidateController
的create
action,我們來寫個提示(flash[]
)。
接著我們在index.html.erb
把那flash[]
給印在頁面上。flash[]
的特點就是,只要頁面有印過一次,頁面重新整理後,也不會再出現。
我們就在新增一位候選人看看,是否真的有出現flash[]
按下送出按鈕,真的有出現提示!!!
現在確定功能有正常顯示,接著我們來做程式碼的整理,讓程式碼可以更乾淨,可讀性更高。
首先,在CandidatesController
中create action
清洗資料的那行,等號右邊有點太長了。
1 | clarn_params = params.require(:candidate).permit(:name, :party, :age, :politics) |
之後還會有其他的 aciton 會需要使用,所以我們可以用一個方法把它包起來。
這樣一來原本的
1 | clarn_params = params.require(:candidate).permit(:name, :party, :age, :politics) |
就可以整行拿掉。
因為candidate_params
只會在這個class
底下內被呼叫,不會被其他的class
取用。所以我們可以將它變成一個private method
。因此我們給它一個註記
下一堂課程,將學習,如果存檔失敗,要如何執行。
參考來源:為你自己學 Ruby on Rails (https://railsbook.tw/)