gpt4 book ai didi

ruby-on-rails - Rails 7 升级后的 ActionController::UnknownFormat

转载 作者:行者123 更新时间:2023-12-05 08:03:42 24 4
gpt4 key购买 nike

我有一个计算器,用户可以在其中输入值,点击提交,无需刷新或重新渲染,计算出的值就会显示在页面上。在我从 Rails 6.1.4.6 升级到 7.0.2.2 之前,一切都运行良好。现在我收到以下错误:

enter image description here

当我将 format.html 添加到 respond_to block 时,出现此错误:

enter image description here

当我将 format.html { render :new } 添加到 respond_to block 时,页面重新呈现 new.html.erb 文件但没有计算值(即 create.js.erb 文件未运行)。

如有任何帮助,我们将不胜感激。

以下是在 Rails 6 中完美运行的文件。

计算器 Controller .rb

def create
@calculation = calculate_one_option

respond_to do |format|
format.js
end
end

def new; end

new.html.erb

<%= form_tag calculate_path, method: :post, remote: true do %>
... form stuff ...
<%= submit_tag "Calculate" %>
<% end %>

创建.js.erb

var formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });

if ("<%= @calculation.error %>".length > 0 ) {
alert("<%= @calculation.error %>");
... js stuff ...
} else {
... more js stuff ...
}

最佳答案

在 Rails 7 中,Turbo 处理这种行为。

如果你想规避这个默认,你可以添加

Turbo.session.drive = false

在给定的链接或表单上作为属性。

或者您可以将同一行添加到全局 javascript 文件,例如 application.js。

import { Turbo } from "@hotwired/turbo-rails"
Turbo.session.drive = false

参见 Turbo 指南 here .

或者,如果在此项目中根本不使用 Turbo 和 Hotwire,并且您不想要额外的 gem 依赖项,则可以完全删除 Hotwire gem。这可以通过以下方式完成 this Stack Overflow answer

关于ruby-on-rails - Rails 7 升级后的 ActionController::UnknownFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71345402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com