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

Boh*_*ohn 12 ruby-on-rails

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

Sha*_*ell 22

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

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


hyp*_*jas 14

在大多数情况下,当你用一个模型将数据发送到你的数据库中,类似的方法create,update,destroy.对于这种类型的操作,您可以使用form_for.

form_tag只是创建一个简单的formhtml,例如,搜索:

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

  • 我喜欢这个,因为你的例子暗示`form_tag`经常用于"搜索"功能这一事实,因为它通常不能很好地映射到Controller#动作 (3认同)
  • 我想补充一点,form_tag适用于创建基于会话的表单.正如你所说,当与数据库交互时 - form_for是要走的路. (2认同)