2013-01-22 43 views
10

我正在閱讀Rails書籍,迄今爲止它一直使用form_for來創建表單。在爲用戶構建登錄頁面的新篇章中,它正在使用form_tag。 所以我想知道什麼時候以及如何知道使用哪一個?這是否只是一個教育性的事情,他也做了這個form_tag?還是應該考慮更多的技術原因?form_for和form_tag,何時使用哪一個?

回答

18

form_tag只是創建一個表單。 form_for爲模型對象創建一個表單。它們不可互換,您應該使用適合特定情況的那個。

form_for對於爲模型對象創建表單更容易一些,因爲它根據對象是新記錄還是保存的記錄計算出要使用的URL和要使用的http方法。

14

在大多數情況下,當您使用模型將數據發送到數據庫時,使用的方法有create,update,destroy。對於這種類型的操作,您可以使用form_for

相反form_tag只創建一個簡單的HTML form,例如,搜索:

<%= form_tag("/search", :method => "get") do %> 
    <%= label_tag(:q, "Search for:") %> 
    <%= text_field_tag(:q) %> 
    <%= submit_tag("Search") %> 
<% end %> 
+3

我喜歡這個,因爲你的榜樣暗示說'form_tag'通常用於「搜索」功能,並且事實它通常不完美地映射到控制器#動作 – mmcrae

+2

我想補充一點,form_tag適合創建基於會話的表單。正如你所說,當與數據庫進行交互時,form_for就是要走的路。 – BKSpurgeon