Nee*_*oks 12 devise ruby-on-rails-7
在我的 Rails 7 应用程序中,我尝试在用户按下“删除”按钮时显示确认消息。但是,当按下按钮时,它会立即删除记录,而不显示确认提示。我正在使用 devise 来创建路线 - 我一直在尝试研究这一点,似乎 devise 和/或 Turbo 存在某种损坏的功能,从而破坏了确认对话框?
这是我开始的内容:
<%= button_to 'Delete', @friend, method: :delete, data: { confirm: 'Are you sure?' }, class: "btn btn-danger mx-1" %>
Run Code Online (Sandbox Code Playgroud)
这很好地删除了记录,只是不显示确认。以下是我尝试过的其他一些行,我相信它们应该可以工作,因为如果我理解正确的话,Turbo 应该随 Rails 7 一起安装:
<%= button_to 'Delete', @friend, method: :delete, data: {turbo_method: :delete, turbo_confirm: 'Are you sure?'}, class: "btn btn-danger mx-1" %>
Run Code Online (Sandbox Code Playgroud)
<%= button_to 'Delete', @friend, method: :delete, data: { turbo_confirm: 'Are you sure?' }, class: "btn btn-danger mx-1" %>
Run Code Online (Sandbox Code Playgroud)
然后,我尝试创建一个名为friend_controller.js 的 Stimulus 类并将其放入 Friends/app/controllers 文件夹中:
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
delete(event) {
let confirmed = confirm("Are you sure?")
if (!confirmed) {
event.preventDefault()
}
}
}
Run Code Online (Sandbox Code Playgroud)
并相应更新了我的按钮:
<div class="d-flex" data-controller="friends">
<%= button_to "Delete", @friend, method: :delete, data: { action: "click->friend#delete" } %>
</div>
Run Code Online (Sandbox Code Playgroud)
每个选项都是完美删除记录,只是不显示确认消息。
我正在尝试按照 YouTube 教程构建这个作为我的第一个 Ruby 应用程序,但该视频是 2020 年的,所以使用的是 Rails 6。我正在参加一个学习软件开发的大学课程,所以我想我应该挑战一下我自己也将其更新到当前版本,好吧,我面临挑战。这是在完成本教程之前我需要弄清楚的最后一件事。
在我看到的其他问题中,他们不需要发布 Gemfile 或生成的设备friends_controller.rb,但如果我需要在这里发布它们,请告诉我。
非常感谢您提供的任何帮助!
编辑: - - -
这是我认为所要求的(生成的 HTML)。我通过打开页面、右键单击、选择“检查”并找到相关按钮的 HTML 部分来得到此信息:
<%= button_to 'Delete', @friend, method: :delete, data: { confirm: 'Are you sure?' }, class: "btn btn-danger mx-1" %>
Run Code Online (Sandbox Code Playgroud)
我删除了实际的真实性令牌,因为我认为这些应该保密。我知道这只是一个示例项目,但我不确定这是否是我的计算机所特有的。感谢您在我学习期间对我的耐心指导!
Aus*_*ale 11
我会尝试这个:
<%= button_to 'Delete', @friend, method: :delete, form: { data: { turbo_confirm: 'Are you sure?' } }, class: "btn btn-danger mx-1" %>
Run Code Online (Sandbox Code Playgroud)
因为您使用的是 Turbo,所以您需要将 添加data-turbo-confirm到表单本身,这与在 Rails-ujs 中不同。您可以将其添加到按钮中。
请记住button_to生成的表单不同于link_to.
| 归档时间: |
|
| 查看次数: |
3597 次 |
| 最近记录: |