Nil*_*ils 63 ruby-on-rails devise
我正在尝试让此链接正常工作,执行一个DELETE请求:
<%= link_to "Sign Out", destroy_user_session_path, method: :delete %>
Run Code Online (Sandbox Code Playgroud)
但是,当我单击它时,我的浏览器仍然执行请求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"
Run Code Online (Sandbox Code Playgroud)
这些论坛帖子也很旧了,所以我怀疑在此期间发生了一些变化。
Nil*_*ils 69
正如这里所建议的,以下内容就足够了:
<%= link_to "Sign Out", destroy_user_session_path, data: { "turbo-method": :delete } %>
Run Code Online (Sandbox Code Playgroud)
我已经在我的项目中对此进行了测试,它似乎工作得很好。还要感谢@alexts,你基本上也明白了这一点,但是 GitHub 上的评论甚至消除了双重请求。
ins*_*ero 55
在 Rails 7 中(至少)有两种删除某些内容的方法:
button_to(恕我直言,首选):<%= button_to 'Sign Out', destroy_user_session_path, method: :delete %>
Run Code Online (Sandbox Code Playgroud)
呈现一个 HTML 表单,该表单发送POST带有“删除”值的隐藏_method属性的请求。Rails 会将其视为有一个DELETE方法(并将其路由到products#destroy或您的路由所说的任何内容)。不要在另一种表单中使用此表单(HTML禁止一种表单在另一种表单中使用)。
link_to:<%= link_to 'Sign Out', destroy_user_session_path, data: {turbo_method: :delete} %>
Run Code Online (Sandbox Code Playgroud)
呈现一个a带有属性的简单标签data-turbo-method。此链接发送真实 DELETE请求。
如果您的destroy操作以 结尾redirect_to,某些浏览器将使用方法重定向到新位置DELETE(导致错误),因此请确保status: :see_other向 中添加参数redirect_to,就像指南建议的那样。
如果你想给上面的按钮添加确认提示:
<%= button_to 'Sign Out', destroy_user_session_path, method: :delete,
form: {data: {turbo_confirm: 'Are you sure?'}} %>
Run Code Online (Sandbox Code Playgroud)
如果您想向上面的链接添加确认:
<%= link_to 'Sign Out', destroy_user_session_path,
data: {turbo_method: :delete, turbo_confirm: 'Are you sure?'} %>
Run Code Online (Sandbox Code Playgroud)
Pav*_*r V 10
在git上找到的
运行这些命令
这对我有用。
$ rails importmap:install
$ rails turbo:install stimulus:install
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32780 次 |
| 最近记录: |