rails是否使用方法:: patch使用_form.html.erb进行编辑?

我正在按照Ruby on Rails教程指南进行操作,我将在5.12节中使用partials来清理视图中的重复 。 我理解为什么按照DRY惯例使用partials ,但是,我很好奇new.html.erb和edit.html.erb的区别。 具体来说,在使用部分_form.html.erb文件之前,edit.html.erb文件显式调用了method: :patch

   
...

…现在_form.html.erb文件涵盖了new和edit,而没有显式调用PATCH :

   
...

是否仍在“幕后”调用PATCH进行编辑?

正如您分享的教程中所述:

我们可以使用这个更简单,更简单的form_for声明代表其他任何一种forms的原因是@article是一个对应于一整套RESTful路由的资源,Rails能够推断出要使用的URI和方法。

另外,从那里给出的参考 :

对于@post的现有resourcerecord ,它相当于:

 <%= form_for @post, as: :post, url: post_path(@post), method: :patch, html: { class: "edit_post", id: "edit_post_45" } do |f| %> ... <% end %> 

然而,对于资源的新记录,即Post.new ,它相当于

 <%= form_for @post, as: :post, url: posts_path, html: { class: "new_post", id: "new_post" } do |f| %> ... <% end %> 

因此,在这种情况下,魔法在于有两件事的铁轨,帮助铁路了解如何处理这种forms:

  1. 您为模型定义的路线, resources :article
  2. 传递给form_forresource对象的类型(现有记录或新记录)。

是。 form_for检查模型是否持久化以了解是否需要执行POST (创建)或PATCH (更新)。