:form_for中的模型和@model之间的区别?
使用form_for与以下方法有什么区别:
: 40 %> ...
和:
{:action => 'create'} do |f| %> : 40 %> ...
使用@user只是自动使用CRUD方法进行URL操作吗?
如果给form_for
一个没有实例变量的符号,它会查找具有相同名称的实例变量。
文件说:
例如,如果@post是您要编辑的现有记录
<% form_for @post do |f| %> ... <% end %>
等同于:
<% form_for :post, @post, :url => post_path(@post), :html => { :method => :put, :class => "edit_post", :id => "edit_post_45" } do |f| %> ... <% end %>
如果您只提供像@user
这样的模型实例而不指定操作(如第一个示例中所示),Rails会自动为您的表单使用相应的CRUD操作:
-
如果
@user
是未保存的新User
对象,则表单将指向您的create
操作。 -
如果
@user
是从数据库加载的现有User
,则将使用update
操作。
这样做的好处是,您可以在edit
视图和new
视图中重复使用相同的表单,而无需更改表单的:url
参数。
像往常一样, API文档提供了更多信息。