正如问题所说......差异是什么?应该何时使用?
我在这里使用表单,但是可以替换使用form_tag吗?:
<%= form_for [@event,@comment] do |f| %>
<% if @comment.errors.any? %>
<div class="error_messages">
<h3>Please correct the following errors.</h3>
<ul>
<% @comment.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.text_field :body, rows: 10, placeholder: "Leave a comment" %>
</div>
<div class="actions">
<%= f.submit "Post comment", class: "btn" %>
</div>
<% end %>
干杯!
答案 0 :(得分:1)
form_for
是正确的选择。
来自http://guides.rubyonrails.org/form_helpers.html:
“form_tag助手接受2个参数:操作的路径和选项哈希。”
请注意,您无法将模型实例传递给[@event,@comment]
form_tag
基本上只是一种方便的方法,你可以用它来保存自己写简单的HTML。
form_for
接受一个模型实例作为参数,并在此基础上提供额外的帮助 - 参数f
被传递到块中你给它。 f
是一个表单对象,它知道您传递给form_for
的模型,并且可以更轻松地编写表单的其余部分。
稍后在表单中了解如何使用<%= f.text_field :body, rows: 10, placeholder: "Leave a comment" %>
?您无法使用form_tag
执行此操作,因为表单对象f
将无法使用。