我正在尝试让这个链接正常工作,执行一个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"这些论坛帖子也相当古老,因此我怀疑在这段时间里发生了一些变化。
发布于 2021-12-25 22:00:20
发布于 2022-02-09 11:34:07
在rails 7中(至少)有两种删除某些内容的方法:
使用button_to (首选的IMHO):
<%= button_to 'Sign Out', destroy_user_session_path, method: :delete %>呈现一个HTML,该表单发送带有带有“delete”值的隐藏POST属性的_method请求。Rails将将其视为具有DELETE方法(并将其路由到products#destroy或您的路由所述的任何内容)。不要在另一个表单中使用这个表单(HTML 禁止,一个表单在另一个表单中)。
使用link_to
<%= 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参数,就像指南建议一样。
确认
如果要向上面的按钮添加确认提示:
<%= button_to 'Sign Out', destroy_user_session_path, method: :delete,
form: {data: {turbo_confirm: 'Are you sure?'}} %>如果要向上面的链接添加确认信息:
<%= link_to 'Sign Out', destroy_user_session_path,
data: {turbo_method: :delete, turbo_confirm: 'Are you sure?'} %>发布于 2022-10-10 12:40:46
在git上找到的
运行以下命令
对我起作用了。
$ rails importmap:install
$ rails turbo:install stimulus:installhttps://stackoverflow.com/questions/70474422
复制相似问题