菜鳥筆記: “form_for” VS “form_with”

王建豪
2 min readSep 2, 2019

--

要聊 from_for 或是 from_with 之前,必須先提到form_tag這個即將被淘汰的表單輔助方法

在Rails裡, 我們透過 Action View 得到許多好用的表單輔助方法,而其中最基本的表單方法應屬form_tag了。

有注意到嗎? 在”form_tag”是無法綁定MODEL物件的輔助方法,基本上是用在傳送http request,比較適合處理單純的資料傳輸,常用於表格中送出需要的變數。例如:一個登入表格或是網址的鍵入後的傳輸等…

因此好心的Rails提供了另一種可綁定MODEL的選擇”form_for”方法,讓大家可以建立或是修改MODEL的資料

以上面的程式碼來說,我們在candidates_controller裡已經設定要接form_for傳遞來的資料

當按下SUBMIT按鈕時,strong parameter的機制會驗證並將綁定candidate的params送到在controller內需要它的方法裡。

例如:新增或是修改都可以form_for來協助我們得到乾淨可寫入的params。

那好心人Rails又推出form_for是做什麼呢?

答案: 是來結合 form_tag 跟 form_for 的優點並取代它們。

這樣是不是就只要一個form_with就把其他的表單輔助方法都取代掉了呢?

感覺最後獲勝的應該就是 form_with 了

--

--

No responses yet