首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Rails5中,使用带有方法delete的帮助器link_to会发出get和object#show,而不是object#destroy

这是因为在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操作。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供可扩展的计算能力,满足各种业务需求。详情请参考:https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):高性能、可扩展的关系型数据库服务。详情请参考:https://cloud.tencent.com/product/cdb
  • 云原生容器服务(TKE):基于Kubernetes的容器管理服务,简化容器化应用的部署和管理。详情请参考:https://cloud.tencent.com/product/tke
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Rails路由

    用于生成路径URL地址辅助方法 创建资源路由时,会同时创建多个可以控制使用辅助方法,如上面的资源路由创建以下方法: photos_path:返回值为 /photos new_photos_path...有时候复数资源希望能够不使用ID就能查找资源,如显示当前登录用户信息: get 'profile', to: 'users#show' 如果 get 方法to选项值是字符串,那么这个字符串应该使用...把控制放入同一命名空间是非常常见,如将管理员有关控制置于 Admin:: 命名空间中,这样可以把控制文件放在 app/controllers/admin 文件夹路由中这样声明: namespace...方法时,可以传入MagazineAd实例,不只是数字ID: 还可以使用...当然使用 link_to 等辅助方法时,可以只指定对象,不必完整调用 url_for 方法: <%= link_to

    4.5K20

    REST APISOAP API之间区别

    服务地址请求状态组合,将计算散列键组合成结果集。 GET请求允许客户端发出非常特定请求,但只必要时。...RESTful系统,动词数量有限,使人们对这种方法感到困惑沮丧。看似任意不必要约束,实际上是为了以非特定于应用程序方式鼓励可预测行为。...这是基于网络分布式基础设施一个关键属性。如果客户端发出GET请求时被中断,那么由于动词幂等性,它应该被授权再次发出请求。 设计良好基础设施,客户机向哪个应用程序请求什么并不重要。...它们返回不是201,而是创建了资源主体200。这似乎是避免第二个请求快捷方式,但它结合了POSTGET函数,同时增加了缓存资源可能性。避免以牺牲大局为代价走捷径冲动。...注意:此协议级别的处理并不一定排除需要更高(应用程序级别)事务处理,体系结构上,它是希望应用程序级别以下进行处理属性。 DELETE DELETE公共Web上没有广泛使用(谢天谢地!)

    1.3K20

    SQL命令 CREATE TRIGGER(二)

    执行SQL触发代码时,系统自动重置(NEWs)触发代码中使用所有变量。 执行每条SQL语句之后 IRIS检查SQLCODE。...因为触发代码不是作为过程生成,所以触发所有局部变量都是公共变量。 这意味着触发所有变量都应该用NEW语句显式声明; 这可以防止它们调用触发代码与变量发生冲突。...使用SQLCOMPUTED/SQLCOMPUTONCHANGE,不是覆盖属性Get()或Set()方法。...使用Get()/Set()方法覆盖可能导致以下错误结果:{property*O}值是用SQL确定,没有使用覆盖Get()/Set()方法。...编译到类例程任何其他代码都不能定义相同标签,包括在其他触发、非过程块方法、SqlComputeCode其他代码。 注意:对标签使用冒号前缀要优先于对主机变量引用使用冒号前缀。

    1.6K20

    REST APISOAP API之间区别

    服务地址请求状态组合,将计算散列键组合成结果集。 GET请求允许客户端发出非常特定请求,但只必要时。...RESTful系统,动词数量有限,使人们对这种方法感到困惑沮丧。看似任意不必要约束,实际上是为了以非特定于应用程序方式鼓励可预测行为。...这是基于网络分布式基础设施一个关键属性。如果客户端发出GET请求时被中断,那么由于动词幂等性,它应该被授权再次发出请求。 设计良好基础设施,客户机向哪个应用程序请求什么并不重要。...它们返回不是201,而是创建了资源主体200。这似乎是避免第二个请求快捷方式,但它结合了POSTGET函数,同时增加了缓存资源可能性。避免以牺牲大局为代价走捷径冲动。...注意:此协议级别的处理并不一定排除需要更高(应用程序级别)事务处理,体系结构上,它是希望应用程序级别以下进行处理属性。 DELETE DELETE公共Web上没有广泛使用(谢天谢地!)

    2K10

    No ‘Access-Control-Allow-Origin‘ header is present之 为什么跨域及解决方案

    1 浏览限制 2 跨域 3 浏览发送是 XHR (XMLHttpRequest)请求 当以上三个条件都满足时浏览抛出跨域请求异常(记住是浏览抛出异常,和服务端没太大关系),讲跨域请求解决方案前先了解几个问题...1 http请求,哪些是常见简单请求,哪些是非简单请求 常见简单请求:请求方法为:GET ,HEAD,POST,请求header里面无自定义头,Content-Type为以下几种:text/plain...请求,带自定义头ajax请求 2 浏览发送跨域请求时候,会有哪些过程 如果是简单请求,浏览先发送请求,然后判断服务返回头中是否支持跨域请求,否则抛出跨域异常 如果是非简单请求,浏览发出...不一定生效 方案2: 采用jsonp方式,需要后台前台同时改动代码, 1 前台需要设置callback参数,如果使用是jquery ajax 那么dateType属性设置为jsonp,jquery框架自动设置参数名为...,例如jquery默认使用是callback 弊端:jsonp 需要前后端都去修改代码,且jsonp是通过动态创建script脚本发送请求,仅支持 GET方法,jsonp发出请求不是xhr请求,也是能解决跨域原因

    1K10

    Web 应用开发进化论

    HTTP 请求带有四种基本 HTTP 方法,我想在这里处理它们:GET、POST、PUT、DELETE。...创建 -> HTTP POST 读取 -> HTTP GET 更新 -> HTTP PUT 删除 -> HTTP DELETE 我们上面的网站示例,通过访问浏览 URL 从 Web 服务向客户端提供服务...传统意义上网站,服务就是负责对客户端请求做出反应;要么回复来自 HTTP GET 请求资源(例如 HTML、CSS、JavaScript),要么确认来自 HTTP POST、PUT、DELETE...传统网站,对于每个不同 URL,都会从客户端向 Web 服务发出一个新请求。 对于每个 URL,都会将不同 HTTP GET 方法发送到专用 Web 服务来完成请求。...,但现在是客户端不是服务上执行,因此这不再是服务端渲染。

    4.2K10

    5个REST API安全准则

    REST是通过URL路径元素表达系统特定实体手段。REST不是一个架构,而是一种Web上构建服务架构风格。...1 - 授权 (1)保护HTTP方法 RESTful API通常使用GET(读),POST(创建),PUT(替换/更新)DELETE(删除记录)。 对于每个资源并非都要提供所有这些操作。...2 - 输入验证 帮助用户将高质量数据输入到您Web服务,例如确保邮政编码对提供地址有意义,或日期有意义。 如果不是,拒绝该输入。...当在浏览DOM插入值时,强烈建议使用.value / .innerText / .textContent不是使用.innerHTML来更新,因为这样可以防范简单DOM XSS攻击。...一些方法(例如,HEAD,GET,OPTIONSTRACE)被定义为安全,这意味着它们仅用于信息检索,并且不应该更改服务状态。设计构建REST API时,您必须注意安全方面。

    3.7K10

    【Java技术指南】「Unirest编程专题」一起认识一下一个“灰常”优秀Http工具,让Http开发变得如此简单

    本文中,我们将深入探讨Unirest-Java技术细节使用方法。...支持多种HTTP方法:Unirest-Java支持GET、POST、PUTDELETE等多种HTTP方法,可以满足不同需求。...Unirest-Java安装配置Unirest-Java可以通过Maven或Gradle进行安装配置。Maven,只需要在pom.xml文件添加以下依赖项:<!...Unirest带有一个默认映射,它将使用流行Google Gson库序列化为json。...}) .asEmpty();异步请求大多数时候,您希望应用程序是异步不是阻塞,UnirestJava中使用匿名回调来支持这一点。所有请求类型都支持异步版本。

    2K11

    Asp.Net Web API 2第五课——Web API路由

    如果你熟悉Asp.Net MVC,Web API路由与Asp.Net MVC路由是非常类似的。这主要区别就是Web API使用是HTTP方法不是URI路径来选择Action。...Routing Tables路由表   Asp.Net Web API,一个控制就是一个处理HTTP请求类,控制public 方法被叫做action方法或者简单Aciton。...例如,对于一个Get请求,Web API查找一个以“Get…”开头动作,如“GetContact”或“GetAllContacts”等。这种约定只应用于GET、POST、PUTDELETE方法。...注意,URI{id}片段如果出现,会被映射成Actionid参数。在这个例子,这个控制定义了两个GET方法,一个带有id参数一个不带有id参数。...它对框架发出信号:这个方法不是一个动作,,即使它可能与路由规则匹配。 总结  本节课主要是提供了关于路由整体概述。

    1.2K50

    CA1065:不要在意外位置引发异常

    所有派生项 System.ArgumentException(仅从带有索引 Get) KeyNotFoundException(仅从带有索引 Get) 事件访问方法 事件访问应是不会引发异常简单操作...否则,可能丢失哈希表项。 采用参数 GetHashCode 版本可能引发 ArgumentException。 但是,Object.GetHashCode 应始终不会引发异常。...ToString 方法 调试器使用 System.Object.ToString 来帮助以字符串格式显示有关对象信息。 因此,ToString 不应更改对象状态,也不应引发异常。...从静态构造函数引发异常应具备充分理由(如安全问题)。 终结 从终结引发异常将导致 CLR 快速失败,从而中断过程。 因此,应始终避免终结引发异常。...何时禁止显示警告 如果冲突是由异常声明不是引发异常造成,则可禁止显示此规则发出警告。 相关规则 CA2219:异常子句中不引发异常 另请参阅 设计规则

    63520

    CS 可视化: CORS

    如果您想了解有关 HTTP 请求和响应更多信息,我之前写过一篇小博文,尽管我示例中使用是 HTTP/1.1 不是 HTTP/2,但这不会影响 CORS。...在这种情况下,只有使用 GET、POST 或 PUT 方法请求将被允许!...当请求是 GET 或 POST 方法且没有自定义头部时,请求是简单!任何其他请求,例如带有 PUT、PATCH 或 DELETE 方法请求,将进行预检。...通过这种方式,我们可以缓存预检响应,浏览可以不发送新预检请求情况下使用它! 凭据 默认情况下,Cookie、授权头 TLS 证书仅在同源请求上设置!...然而,我们可能希望跨源请求中使用这些凭据。也许我们想在请求包含服务可以用来识别用户 Cookie!

    13210

    老板与秘书故事理解CORS(跨域),真的超级简单

    背景 一天下午,正认真的上(摸)班(鱼)呢,一个前端开发同事找到运维团队“后端服务是不是有什么异常啊,为什么我访问不通呢?”“接口地址拿来~”运维工程师使用本地postman进行调用。...预检,浏览发送头中标示有 HTTP 方法真实请求中会用到头。...API 发出所谓预请求,并询问允许选项:谁可以调用 API 以及可以发出什么类型请求 API 发送带有此类选项响应,并且(可选)包括浏览应缓存这些依赖设置 如果前端应用程序及其尝试发出请求位于允许列表内...,则浏览允许其通过 否则,请求将被拒绝,并出现我们本文开头看到错误 我们启动一个后端前端来模拟问题: 后端Go代码 package main import ( "encoding/json.../index.html") } 运行这段代码,前端html将运行为http://localhost:3333 使用浏览访问,得到如下页面,打开F12调试,文本框输入书名,点击Add: 得到了与文章开始时类似的报错

    13310

    SQL命令 TRUNCATE TABLE

    试图编译引用只读表TRUNCATE TABLE导致SQLCODE -115错误。 注意,这个错误现在是在编译时发出不是执行时发生。...Fast Truncate 如果可能,SQL优化将执行高效Fast Truncate表操作。 Fast Truncate操作删除表范围,不是单独删除每条记录。...这允许事务期间进行大规模删除,不会溢出锁表。 可以使用$SYSTEM.SQL.Util.GetOption(“LockThreshold”)方法确定当前系统范围锁阈值。...在这些方法导入SQL代码文件中发现TRUNCATE TABLE命令将被忽略。 这些导入方法确实支持DELETE命令。 示例 下面两个动态SQL示例比较了DELETETRUNCATE表。...每个示例都创建一个表,向表插入行,删除表所有行,然后向现在为空插入一行。 第一个示例使用DELETE删除表所有记录。

    1.8K30

    【前端 · 面试 】HTTP 总结(三)—— HTTP 请求方法

    请求方法分类总结 根据 HTTP 标准,HTTP 请求可以使用多种请求方法。 HTTP1.0 定义了三种请求方法GET, POST HEAD 方法。...GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回数据(不修改) HEAD 方法GET 方法一样,都是向服务发出指定资源请求...DELETE 方法 DELETE 方法就是请求服务删除指定 URL 所对应资源。但是,客户端无法保证删除操作一定会被执行,因为 HTTP 规范允许服务不通知客户端情况下撤销请求。...HTTP协议, PUT 方法已经被用来表示对资源进行整体覆盖, POST 方法则没有对标准补丁格式提供支持。...响应 204 状态码表示这是一个操作成功响应,因为响应带有消息主体。 OPTIONS 方法 OPTIONS 方法用于获取目的资源所支持通信选项。

    55910

    django 1.8 官方文档翻译: 2-6-4 数据库访问优化

    在数据库不是Python做数据库工作 比如: 最基础层面上,使用过滤器反向过滤器对数据库进行过滤。 使用F 表达式相同模型基于其他字段进行过滤。 使用数据库注解聚合。..., 以及适当管理默认管理。...对于模板代码替换模型对象,这样非常有用 —— 只要字典带有的属性模板中使用一致,就没问题。...defer()only()方法在你可以避免加载大量文本数据,或者可能要花大量时间处理返回给Python字段时,特别有帮助。像往常一样,应该先写出个大概,之后再优化。...使用QuerySet.update()delete() 通过QuerySet.update()使用批量SQL UPDATE语句,不是获取大量对象,设置一些值再单独保存。

    1.1K30

    Http 协议你都了解吗?

    但是我们实际应用中常用也就是 get post,其他请求方式也都可以通过这两种方式间接来实现。 GET 向指定资源发出“显示“信息。...使用GET方法只用于获取数据,不应该改变数据本身,即不对数据进行操作和提交信息。 POST 向指定资源提交数据,请求服务进行处理(例如提交参数/表单,或者上传文件)。...DELETE 顾名思义,请求服务删除 URI 所对应资源。 HEAD 与 GET 方法一样,都是向服务发出指定资源请求。只不过服务将不传回资源本文部分。...它好处在于,使用这个方法可以不必传输全部内容情况下,就可以获取其中“关于该资源信息”(元信息或称元数据)。 TRACE 回显服务收到请求,主要用于测试或诊断。...因为浏览可能对请求地址做历史记录存储,对于 GET 请求登录,那其他人就可以直接在 URL 上拿到你账号密码了, POST 拿不到参数。 5.

    41110

    第160天:Http协议详细总结

    URL用于定位了网络资源,创造PUT,DELETE,POST,GET来对应增,删,改,查操作。但是我们实际应用中常用也就是getpost,其他请求方式也都可以通过这两种方式间接来实现。...(1)GET 向指定资源发出“显示“信息。使用GET方法只用于获取数据,不应该改变数据本身,即不对数据进行操作和提交信息。...(4)DELETE 顾名思义,请求服务删除URI所对应资源。 (5)HEAD 与GET方法一样,都是向服务发出指定资源请求。只不过服务将不传回资源本文部分。...它好处在于,使用这个方法可以不必传输全部内容情况下,就可以获取其中“关于该资源信息”(元信息或称元数据)。 (6)TRACE 回显服务收到请求,主要用于测试或诊断。...因为浏览可能对请求地址做历史记录存储,对于GET请求登录,那其他人就可以直接在URL上拿到你账号密码了,POST拿不到参数。

    44520

    SqlAlchemy 2.0 中文文档(七十四)

    () 方法,现在将被“名称标准化”,即,以小写形式表示以进行大小写不敏感名称,不是 Oracle 使用原始大写格式: >>> insp.get_indexes("addresses") [{'unique...这用于IN表达式,元素列表语句执行时被渲染为单独绑定参数,不是语句编译时。这允许将单个绑定参数名称链接到多个元素 IN 表达式,并允许使用查询缓存与 IN 表达式一起使用。... CUBE ROLLUP 情况下,这些函数之前版本已经可以使用,但是对于 GROUPING SETS,编译添加了一个占位符以允许使用这个功能。...B 实例,因此进行集合附加之前尝试将它们与集合现有成员进行比较,实际上是执行调用验证集合附加之前。...() 方法内部外键约束名称现在将被“名称标准化”,即,以小写形式表示以便于不区分大小写名称,不是 Oracle 使用原始大写格式: >>> insp.get_indexes("addresses

    26010
    领券