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
的现有resource
或record
,它相当于:
<%= 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:
- 您为模型定义的路线,
resources :article
- 传递给
form_for
的resource
对象的类型(现有记录或新记录)。
是。 form_for
检查模型是否持久化以了解是否需要执行POST
(创建)或PATCH
(更新)。