Rails 会生成一个表单部分,它既可以用于由 get 操作呈现的页面,也可以用于由新操作呈现的页面。如果是前者,则表单的方法设置为 PUT,如果是后者,则表单的操作设置为 POST。
rails 如何决定使用哪种方法?
Rails 会生成一个表单部分,它既可以用于由 get 操作呈现的页面,也可以用于由新操作呈现的页面。如果是前者,则表单的方法设置为 PUT,如果是后者,则表单的操作设置为 POST。
rails 如何决定使用哪种方法?
如果传递给表单的对象是persisted?
,则表单构建器知道您正在更新一个对象,因此将呈现一个PUT
动作。如果它没有被持久化,那么它知道你正在创建一个新对象并且它将使用POST
.
<%= form_for @user do |f| %>
<%= f.button %>
<% end %>
如果@user
是新记录,POST
则使用且按钮标签变为Create User
,否则PUT
使用且标签变为Update User
。没有更多的了。
表单编辑使用现有资源PUT
,表单创建新资源使用POST
。根据此处描述的 REST 标准。
从 railsform_for
帮助代码:
action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] : [:new, :post]
并且persisted?
对于 ActiveRecord 被声明为:
!(new_record? || destroyed?)