Ruby on rails 轨道5.2:带“要求”的“U”形;本地:假“;对于AJAX请求?
我刚从Rails 5.1升级到5.2。我有一个应用程序,已经在生产几个月没有问题良好的测试覆盖率 我已经在Rails 5.1中使用了几个月的Ruby on rails 轨道5.2:带“要求”的“U”形;本地:假“;对于AJAX请求?,ruby-on-rails,ajax,ruby-on-rails-5.2,Ruby On Rails,Ajax,Ruby On Rails 5.2,我刚从Rails 5.1升级到5.2。我有一个应用程序,已经在生产几个月没有问题良好的测试覆盖率 我已经在Rails 5.1中使用了几个月的form_和。form_with的默认值是默认情况下所有表单都是AJAX,并且必须指定local:true,才能有正常的HTTP POST请求 在升级到Rails 5.2之后(我遵循了升级指南),我遇到了这样一种情况:我的一些表单不再作为AJAX请求提交,除非我特别向它们添加local:false 滚动到代码段的末尾,查看其他有效的local:false。代
form_和。form_with
的默认值是默认情况下所有表单都是AJAX,并且必须指定local:true
,才能有正常的HTTP POST请求
在升级到Rails 5.2之后(我遵循了升级指南),我遇到了这样一种情况:我的一些表单不再作为AJAX请求提交,除非我特别向它们添加local:false
滚动到代码段的末尾,查看其他有效的local:false
。代码直接从应用程序中获取,无需修改
# This will not work and submits a normal HTTP POST
<%= form_with model: @team_member_type, url: [:settings, @team_member_type], class: "dialog-container", id: "team_member_type-dialog", data: { closable: "false" } do |form| %>
# This will work and submits an AJAX request
<%= form_with model: @team_member_type, url: [:settings, @team_member_type], class: "dialog-container", id: "team_member_type-dialog", data: { closable: "false" }, local: true do |form| %>
同样,我所做的唯一更改是手动将local:false
添加到表单中,以强制它是远程的
文档说local:false
是默认值,所以我不必手动指定它
我错过了什么
注意,带有remote:true
的AJAX链接工作正常;默认情况下,只有表单没有提交AJAX
更新
做一些挖掘,当我升级到5.1时,它看起来可能是一个问题。我找不到config/initializers/new_framework_defaults_5_1.rb
文件,该文件将默认标志设置为form_with
远程。因为在我升级到5.2时该文件不存在,所以它没有覆盖那些新的默认配置。如果我确认这确实是问题所在,我将更新此问题
更新2
是的,验证问题是我没有复制这些配置值的config/new\u framework\u defaults\u 5\u 1.rb
文件。问题是我没有从Rails 5.1中复制新默认值的升级配置文件。Rails最终在5.1(或5.2?)中删除了该版本,并使用config.load\u默认版本
,将所有升级的配置加载到指定版本
一次升级一个版本的危险之一是,在我从5.1升级到5.2之间,情况发生了变化!我建议提前阅读所有版本的所有发行说明,而不是一次只阅读一个。从Rails 5.1升级到Rails 5.2后,我也遇到了同样的问题
ActionController::UnknownFormat request.formats:[“text/html”]
Controlle缺少此请求格式和变体的模板
带有submit的表单_无法远程工作。它仅适用于local:false参数
以下是我的config/application.rb
文件中的相关行:
module RailsStarterKit
class Application < Rails::Application
config.load_defaults 5.2
模块导轨启动套件
类应用程序
module RailsStarterKit
class Application < Rails::Application
config.load_defaults 5.2