rails如何决定使用PUT或POST方法呈现表单?
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标准。
从rails form_for
帮助程序代码:
action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] : [:new, :post]
persisted?
对于ActiveRecord,声明为:
!(new_record? || destroyed?)