Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails如何决定使用PUT或POST方法呈现表单?_Ruby On Rails_Ruby On Rails 3_Forms_Rest_Form Helpers - Fatal编程技术网

Ruby on rails rails如何决定使用PUT或POST方法呈现表单?

Ruby on rails rails如何决定使用PUT或POST方法呈现表单?,ruby-on-rails,ruby-on-rails-3,forms,rest,form-helpers,Ruby On Rails,Ruby On Rails 3,Forms,Rest,Form Helpers,Rails生成一个可在get操作呈现的页面和新操作呈现的页面上使用的部分表单。如果是前者,则窗体的方法设置为PUT;如果是后者,则窗体的操作设置为POST rails如何决定使用哪种方法?编辑现有资源的表单使用PUT,创建新资源的表单使用POST。按照所述的休息标准 从rails表单_中获取帮助程序代码: action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] :

Rails生成一个可在get操作呈现的页面和新操作呈现的页面上使用的部分表单。如果是前者,则窗体的方法设置为PUT;如果是后者,则窗体的操作设置为POST


rails如何决定使用哪种方法?

编辑现有资源的表单使用
PUT
,创建新资源的表单使用
POST
。按照所述的休息标准

从rails
表单_中获取
帮助程序代码:

action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] : [:new, :post]
ActiveRecord的
持久化?
声明为:

!(new_record? || destroyed?)

如果传递给表单的对象为,则表单生成器知道您正在更新对象,因此将呈现
PUT
操作。如果它没有被持久化,那么它知道您正在创建一个新对象,它将使用
POST

<%= form_for @user do |f| %>
  <%= f.button %>
<% end %>


如果
@user
是新记录,则使用
POST
,按钮标签变为
Create user
,否则使用
PUT
,标签变为
Update user
。我的问题是Rails如何决定在表单上设置哪个方法。用什么来决定?更新,这是你想要的吗?谢谢。恐怕@hgmnz比你还厉害。谢谢。我最终使用created_at,因为我使用客户端js访问我的模型,而@model被gon公开为散列。在Rails 6中,有一个隐藏的输入
\u方法
,其值为
补丁
,用于更新操作<代码>