部分表格无法正确呈现

Forms on partial doesn't render properly

我有一个 Rails 应用程序 运行 在 Rails 3.x 和 ActiveAdmin 0.6.6 上运行良好。但是我想将它升级到 Rails 5 和 ActiveAdmin 1.x。我开始升级过程,首先从 3.x 升级到 4.x,然后升级到 5x,我使用 ActiveAdmin 测试了 1.0.0,现在我使用的是 Github 的主服务器。

应用程序在 Rails 版本和 ActiveAdmin 中一切正常,但部分 ActiveAdmin 表单。

问题如下:

我有一个文件 app/admin/menu.rb,其中包含部分 views/admin/menus/_form.html.erb。 部分包含菜单的形式。

这是部分(views/admin/menus/_form.html.erb)的内容:

<%= semantic_form_for [:admin, @menu], builder: ActiveAdmin::FormBuilder do |f| %>
  <% f.inputs 'Campos Menu' do %>
    <% f.input :project if current_admin_user.admin? %>
    <% f.input :title %>
    <% f.input :title_en %>
    <% f.input :item %>
    <% f.input :icon, as: :file %>
  <% end %>
  <% f.inputs 'Submenus' do %>
    <% f.has_many :submenus, heading: '' do |fa| %>
      <% fa.input :title, as: :string %>
      <% fa.input :title_en, as: :string %>
      <% fa.input :kind, as: :select, collection: Submenu.kind_collection %>
      <% fa.input :items_as, as: :select, collection: Submenu.items_as_collection %>
    <% end %>
  <% end %>
  <% f.actions do %>
    <% f.action :submit %>
  <% end %>
<% end %>

此文件的渲染结果只有 'actions' 按钮,在本例中为 'submit' 按钮。有趣的是,如果我从部分中删除 <% f.actions do %>...,那么 <% f.inputs 'Submenus' do %> 将被渲染,如果我删除后者,则呈现相同。在其他情况下,others 在包含 end 的最后一个块上呈现。

在 Rails 4.x 和 5.x 上观察到相同的行为(除了 Rails 5.1.x 我没有测试)。

如果我将表单从部分移动到 app/admin/menu.rb,它会正确呈现。这对我来说可能是一个解决方案,但是我还有其他形式使用 JQuery 进行字段操作和前端的其他内容。

正如我之前所说,所有这些表单部分都在 Rails 3.x 和 ActiveAdmin 0.6.6 上正常工作。

有人知道问题出在哪里吗?

免责声明:我不是 Rails 或 ActiveAdmin 专家,所以如果有与此问题相关的愚蠢错误,请多多包涵。

是的,activeadmin#3486 I'm glad you figured out the workaround. I'm curious if this Arbre branch 已为您修复。很高兴看到人们仍在升级,我会尽我所能提供帮助。

我找到的解决方案是在部分 <% f.input(s) %> 上放置一个 =。用这样的 <%= f.inputs ... %> 而不是 <% f.inputs ... %> 可以解决问题。