我正在尝试让这个链接工作,执行DELETE
请求:
<%= link_to "Sign Out", destroy_user_session_path, method: :delete %>
但是,当我点击它时,我的浏览器仍然执行GET
请求(失败的原因显而易见):
我在其他论坛上读到过很多帖子,这可能与jquery没有被包含有关。他们提到你需要取消注解app/javascript/application.js
中的一行,但是我的帖子很空:
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
这些论坛帖子也很老了,所以我怀疑在此期间发生了一些变化。
4条答案
按热度按时间hivapdat1#
如这里所建议的,以下内容就足够了:
我已经在我的项目中测试过了,它看起来运行得很好。也要感谢@alexts,你基本上也解决了这个问题,但是GitHub上的评论甚至消除了双重请求。
lxkprmvk2#
在rails 7中删除内容(至少)有两种方法:
使用
button_to
(首选IMHO):呈现一个HTML表单,该表单发送一个带有隐藏的
_method
属性的POST
请求,该属性的值为“delete”。Rails会将其视为具有DELETE
方法(并将其路由到products#destroy
或您的路由所指示的任何方法)。不要在另一个表单中使用此方法(HTML forbids一个表单在另一个表单中)。使用
link_to
:呈现具有
data-turbo-method
属性的简单a
标记。此链接发送真实的DELETE
请求。如果您的
destroy
操作以redirect_to
结束,一些浏览器会使用DELETE
方法重定向到一个新的位置(导致错误),所以请确保像指南建议的那样,在redirect_to
中添加status: :see_other
参数。确认
如果要将确认提示添加到上面的按钮:
如果要向上面的链接添加确认:
oug3syen3#
"在git上找到“
运行这些命令
对我很有效。
lzfw57am4#
方法::delete只添加一个属性
为了使它有用,
rails_ujs
库负责尝试包含有用的内容