form_for和form_tag,何时使用哪一个?

时间:2013-01-22 17:00:24

标签: ruby-on-rails

我正在阅读Rails书籍,到目前为止,它一直在使用form_for来创建表单。在新章节中,它正在为用户构建登录页面,而是使用form_tag。 所以我想知道我们何时以及如何知道使用哪一个?他所做的只是展示这个form_tag的教育事情吗?还是应该考虑更多的技术原因?

2 个答案:

答案 0 :(得分:21)

form_tag只是创建一个表单。 form_for为模型对象创建表单。它们不可互换,您应该使用适合特定情况的那个。

form_for更容易用于为模型对象创建表单,因为它根据对象是新记录还是已保存记录来确定要使用的URL和要使用的http方法。< / p>

答案 1 :(得分:14)

在大多数情况下,当您使用模型向数据库发送数据时,请使用createupdatedestroy等方法。对于此类操作,您可以使用form_for

form_tag仅创建一个简单的form html,例如搜索:

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