繁体   English   中英

Rails 7 升级后的 ActionController::UnknownFormat

[英]ActionController::UnknownFormat After Rails 7 Upgrade

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

在此处输入图像描述

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

在此处输入图像描述

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

任何帮助,将不胜感激。

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

计算器控制器.rb

def create
  @calculation = calculate_one_option

  respond_to do |format|
    format.js
  end
end

def new; end

新.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 指南。

或者,如果在此项目中根本不使用 Turbo 和 Hotwire,并且您不想要额外的 gem 依赖项,则可以完全删除 Hotwire gem。 这可以通过遵循这个 Stack Overflow 答案来完成

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM