。
这是因为在Rails中,link_to方法默认使用HTTP的GET请求来生成链接。而在HTML中,只支持GET和POST请求,不支持DELETE请求。因此,为了实现DELETE请求,Rails使用了一种称为"伪造DELETE请求"的技术。
在Rails中,当我们使用带有方法delete的link_to帮助器时,它会生成一个带有特殊属性的链接,如data-method="delete"和rel="nofollow"。这些属性告诉Rails在点击链接时发送一个DELETE请求。
然而,由于HTML本身不支持DELETE请求,所以Rails通过JavaScript来模拟发送DELETE请求。具体来说,它会在点击链接时触发一个JavaScript函数,该函数会创建一个隐藏的表单,将请求方法设置为DELETE,并将表单提交到指定的URL。这样,服务器就能够正确地处理DELETE请求,并执行相应的操作,如删除对象。
需要注意的是,为了使这种伪造DELETE请求的技术生效,我们需要在应用程序的布局文件中包含Rails提供的javascript_include_tag和csrf_meta_tags帮助器。这些帮助器会加载必要的JavaScript文件和CSRF令牌,以确保请求的安全性。
总结起来,使用带有方法delete的link_to帮助器在Rails5中会发出GET请求和object#show方法,但实际上会通过JavaScript模拟发送DELETE请求来执行object#destroy操作。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云