: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文档提供了更多信息。