new_story GET     /story/new(.:format)  {:action=>"new", :controller=>"stories"}
edit_story GET     /story/edit(.:format) {:action=>"edit", :controller=>"stories"}
     story GET     /story(.:format)      {:action=>"show", :controller=>"stories"}
           PUT     /story(.:format)      {:action=>"update", :controller=>"stories"}
           DELETE  /story(.:format)      {:action=>"destroy", :controller=>"stories"}
           POST    /story(.:format)      {:action=>"create", :controller=>"stories"}

在web开发中,我使用了其他技术,我只使用了GETPOST种方法,但Rails中有RESTful种路由,默认情况下,PUTDELETE种方法用于updatedestroy种操作.使用PUTDELETE有什么好处或需要?我认为这些方法只是做POST的另一种方式——但为什么不坚持POST呢?

推荐答案

它的优点主要是语义上的,并且可以在一定程度上简化URL.不同的HTTP方法映射到不同的操作:

POST   => create a new object
DELETE => delete an object
PUT    => modify an object
GET    => view an object

然后,理论上,你可以使用same个URL,但使用不同的方法与之交互;用于访问资源的方法定义了实际的操作类型.

但实际上,大多数浏览器只支持HTTP GET和POST.Rails在HTML表单中使用了一些"技巧",就像发送了PUT或DELETE请求一样,尽管Rails仍在使用GET或POST来实现这些方法.(这解释了为什么您可能没有在其他平台上使用DELETE或PUT.)

Ruby-on-rails相关问答推荐

在数组中定位不匹配的索引

`heroku Open`和`heroku run rake db:Migrate`不工作(";没有这样的文件或目录";)

使用ActiveSupport::TimeWithZone将UTC转换为用户定义的时区

在Ruby中按特定值合并时,将两个对象数组添加到一起

nginx 中的 Rails 7 Active Storage - 图像中途停止加载 net::ERR_HTTP2_PROTOCOL_ERROR 200

这种使用on:的语法在 Ruby on Rails 中意味着什么?

如何在 Rails 中声明动态路由范围/命名空间变量?

Rails:用于创建固定长度 char(12) 列的迁移

File.open,写入和保存?

在 Rails 中,如何处理多个选中的复选框,只需拆分 , 或?

在 Rails 中将表格行变成链接

Rails如何对列求和?

Rails 4 迁移:如何重新排序列

如何将自定义路由添加到资源路由

如何禁用 HTTP 严格传输安全性?

Rails:进行不可逆转的迁移是不是很糟糕?

如何在两个字段上对 ruby​​/rails 进行排序?

如何在 Rails 3 中订购包含的元素

Rails:如何在rails中使用dependent::destroy?

Rails:您已经激活了 rake 10.3.1,但您的 Gemfile 需要 rake 10.2.2 (Gem::LoadError)