![](/img/trans.png)
[英]ActionController::UnknownFormat in controller rspec after rails 4 upgrade
[英]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.