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。