3

在 2021 年或 2022 年创建的新 Rails 7 应用程序,当我单击带有 的表单时data-turbo-confirm,不会显示警报消息。

<%= form_with url: root_path(),  data: {'turbo-confirm': "Are you sure you want to submit this form?"},
               method: :delete do |f| %>
  <%= f.submit "Delete".html_safe, class: "delete-apple-button btn btn-primary btn-sm" %>
<% end %>


<br />
<%= turbo_frame_tag "apples-list"   do %>
  nothing has happened yet
<% end %>

生成的 HTML 是 在此处输入图像描述

页面加载到:

在此处输入图像描述

单击删除时,不会显示任何警报:

在此处输入图像描述

预期结果: • 确认按钮操作的警报消息

实际结果: • 不显示警报

4

2 回答 2

0

如果您在本地安装了用于turbo-rails的 gem 版本 7.1.0 或 7.1.1,则会发生这种情况

这些宝石编号在 10 月被意外推送到 Rubygems,然后被拉走。但是,由于 bundler在设置新的 rails 应用程序时会默认使用 Rails gem的最大编号,因此它将选择turbo-rails版本 7.1.0 或 7.1.1 ,这将显示此缺陷

宝石已被拉出,因此仅当您在 2021 年 10 月和拉出日期之间开发 Rails 应用程序时才会影响您。

修复您的计算机: gem uninstall turbo-rails

Bundler 将提示您卸载哪个版本: 在此处输入图像描述

如果您安装了两个 gem 版本,则需要重复此步骤。

然后,bundler 将不会使用该版本制作新的应用程序。

但是,如果您已经生成了一个应用程序,它将被锁定到错误的版本。要修复,请在 Gemfile 中明确指定版本

gem "turbo-rails", "~> 1.0"

在此处输入图像描述

于 2022-01-11T17:59:52.273 回答
-1

你可以使用js来做到这一点。

代码对我有用。

function confirmDestroy(message) {
  if (!confirm(message)) {
    return false;
  }
}
<div>
  <%= link_to "Edit this post", edit_post_path(@post) %> |
  <%= link_to "Back to posts", posts_path %>

  <%= button_to "Destroy this post", @post, method: :delete, onclick: "return confirmDestroy('Are you sure want destroy this post?')" %>
</div>

在此处输入图像描述

于 2022-02-08T09:17:13.947 回答