Rails 5.1.2 – form_with未在html中显示data-remote =“true”

Rails 5.1.2:

我正在尝试使用form_with根据Rails文档和此GitHub线程创建一个AJAX表单。

这段代码:

  

实际上这段代码:

   

都产生这个HTML:

 

为什么HTML中没有出现data-remote="true" ,因为我发布的第一个链接表明它应该,以及如何让它出现?

data-remote默认值由选项Rails.application.config.action_view.form_with_generates_remote_forms配置。 默认情况下,在Rails 5中,此选项为true 。 通过所有项目搜索,似乎您从Rails 4或smth迁移。 否则覆盖此选项。

Rails 5.1.2中默认情况下, form_with假定您的表单将使用Ajax。 您可以通过在form_with传递:local选项来选择退出此行为。

 <%= form_with url: '/' do |f| %> <% end %> 

以上代码产生

 

另外如果你想使用没有ajax的表单,你可以使用以下方式 –

 <%= form_with url: '/', local: true do |f| %> <% end %> 

我在使用Rails 5.1.4应用程序时遇到了同样的问题。 使用local: false修复问题。

 <%= form_with url: '/', local: false do |f| %> <% end %> 

对我来说,将这两行添加到config/application.rb修复它:

 # Initialize configuration defaults for originally generated Rails version. config.load_defaults 5.2 

它将发生在Rails 5.1中

使用我在new_framework_defaults_5_1.rb中的配置,如下所示:

 # Make `form_with` generate non-remote forms. Rails.application.config.action_view.form_with_generates_remote_forms = false 

在我的视图文件中,我使用这样的:

 = form_with(model: your_model , url: your_path, method: :post, local: false) do |f| ....your input here... 

现在你的html代码将在表单中生成data-remote:true。