首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 7-使用方法的link_to :delete仍然执行GET请求

Rails 7-使用方法的link_to :delete仍然执行GET请求
EN

Stack Overflow用户
提问于 2021-12-24 15:33:02
回答 4查看 15.3K关注 0票数 42

我正在尝试让这个链接正常工作,执行一个DELETE请求:

代码语言:javascript
复制
<%= link_to "Sign Out", destroy_user_session_path, method: :delete %>

但是,当我单击它时,我的浏览器仍然执行一个GET请求(由于明显的原因而失败):

我在多个论坛帖子上读到过,这可能与jquery未被包括有关。他们提到,您需要在app/javascript/application.js中取消对一行的评论,但是我的行是空的:

代码语言:javascript
复制
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"

这些论坛帖子也相当古老,因此我怀疑在这段时间里发生了一些变化。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-12-25 22:00:20

如建议的这里所示,以下几点就足够了:

代码语言:javascript
复制
<%= link_to "Sign Out", destroy_user_session_path, data: { "turbo-method": :delete } %>

我已经在我的项目中测试过这一点,而且它似乎运行良好。同样感谢@alexts,您基本上也理解了这一点,但是GitHub上的评论甚至消除了双重请求。

票数 39
EN

Stack Overflow用户

发布于 2022-02-09 11:34:07

在rails 7中(至少)有两种删除某些内容的方法:

使用button_to (首选的IMHO):

代码语言:javascript
复制
<%= button_to 'Sign Out', destroy_user_session_path, method: :delete %>

呈现一个HTML,该表单发送带有带有“delete”值的隐藏POST属性的_method请求。Rails将将其视为具有DELETE方法(并将其路由到products#destroy或您的路由所述的任何内容)。不要在另一个表单中使用这个表单(HTML 禁止,一个表单在另一个表单中)。

使用link_to

代码语言:javascript
复制
<%= link_to 'Sign Out', destroy_user_session_path, data: {turbo_method: :delete} %>

呈现带有a属性的简单data-turbo-method标记。此链接发送real DELETE请求。

如果您的destroy操作以redirect_to结尾,一些浏览器将使用DELETE方法重定向到一个新位置(导致错误),因此确保向redirect_to添加status: :see_other参数,就像指南建议一样。

确认

如果要向上面的按钮添加确认提示:

代码语言:javascript
复制
<%= button_to 'Sign Out', destroy_user_session_path, method: :delete,
  form: {data: {turbo_confirm: 'Are you sure?'}} %>

如果要向上面的链接添加确认信息:

代码语言:javascript
复制
<%= link_to 'Sign Out', destroy_user_session_path,
  data: {turbo_method: :delete, turbo_confirm: 'Are you sure?'} %>
票数 30
EN

Stack Overflow用户

发布于 2022-10-10 12:40:46

在git上找到的

运行以下命令

对我起作用了。

代码语言:javascript
复制
$ rails importmap:install
$ rails turbo:install stimulus:install
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70474422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档