RubyOnRails =>練習專案筆記(四)

ck100pro
ck100pro
Published in
4 min readNov 4, 2019

接續上次專案,由於我們可以直接對網頁案右鍵檢視原始碼,所以有心人可以針對這樣子去塞假資料,所以在rails裡如果要提交表單需要給一串算是認證碼的東西,所以我們需要在表單裡面增加一個隱藏欄位。

輸入紅框內的值

在value可以看到<%= =>這個符號,因為我們有在html後面加上.erb所以我們可以在html檔案裡面使用ruby的語法。

我們在回到瀏覽器,在文字欄位隨便輸入值並按下按鈕送出,可以看到畫面沒有任何反應但也不會再出現錯誤訊息了,我們可以對瀏覽器畫面按右鍵檢視原始碼。

可以看一連串的神祕值

打開終端機的畫面,可以看到一連串的神祕數值在紅框內,而黃框內是我們剛剛打在文字欄位的值。

黃色框是剛剛在文字欄位打的值

是不是覺得要打一連串的字很麻煩?? 所以rails裡面有一個好用的語法叫做form_for,可以看下面示意圖。

紅框的地方

這串指令後面要接你要增加表單的model,這個練習專案用我們之前建好的model來用就好。

好了之後我們在把瀏覽器畫面重新整理一次,在按右鍵檢視原始碼你會看到神奇的地方。

紅框是原本的,黃框是用form_for做出來的

看到這邊是不是覺得form_for很神奇,他連你action和method要去哪和用POST都知道,接下來我們可以在do的後面加上 |form|。

加上|form|的用意是他可以承接form_for這個方法yield出來的值,form_for本身還帶有一些方法比如增加欄位和按鈕,我們這邊就把他做出來。

好了之後把瀏覽器重新整理一遍,你會看到有欄位被做出來。

這時我們在檢視原始碼。

這邊要注意的是name的命名,我們可以看到都變成candidate[]的樣式,這是因為在傳送資料時rails會把同名的值整理再一起,我們可以在這些欄位隨便輸入值,再按按鈕送出,然後到終端機看到結果。

請注意紅框的部分

{“candidate”=>{“name”=>”1", “party”=>”2", “age”=>”3", “politics”=>”4"}},rails會把同名的name整理成一個hash,hash的key都是叫candidate,我們可以看到這個hash的value又是一個hash,裡面的key對應的是name、party之類的,他的value就是我們剛剛輸入的那些內容,請再對照網頁原始碼,有看到關聯性了嗎???

接下來我們可以增加一些標籤來增加網頁的可閱讀性,不然無法知道那些欄位要輸入那些值。

增加label標籤

畫面是不是好閱讀一些些了呢~~~此篇就先到這邊啦。

--

--