form_for,form_tag之间的区别?

dev*_*oss 78 ruby-on-rails

form_for和form_tag有什么区别?form_remote_for和form_remote_tag有什么不同吗?

ez.*_*ez. 61

您可以将form_for用于特定模型,

<% form_for @person do |f| %> # you can use f here

    First name: <%= f.text_field :first_name %>
    Last name : <%= f.text_field :last_name %>

<% end %>
Run Code Online (Sandbox Code Playgroud)

Form_tag创建基本表单,

<%= form_tag '/person' do -%>
  <%= text_field_tag "person", "first_name" %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)


gio*_*ian 53

form_for作为第一个arg,他更喜欢一个活跃的记录对象; 它允许轻松创建或编辑表单(要在"新"视图中使用它,您应该在控制器中创建一个空实例,如:

def new
  @foo = Foo.new
end
Run Code Online (Sandbox Code Playgroud)

它还将表单变量传递给块,这样您就不必在表单本身中重复模型名称.这是编写模型相关表单的首选方式.

form_tag只是创建一个表单标签(当然,默默地准备一个反伪造隐藏字段,如form_for); 它最适用于非模型表单(实际上我只将它用于简单的搜索表单等).

类似地,form_remote_for并且form_remote_tag分别适用于模型相关表单而不是模型相关表单,但是它们不是以标准http方法(GET,POST ...)结尾,而是调用ajax方法.

所有这些以及更多可供您在FormHelper中享受 PrototypeHelper 参考页面.

编辑 2012-07-13

Prototype已经从rails很久以前删除,远程表单已经完全改变.请参阅第一个链接,并:remote选择两者form_forform_tag.