ActiveAdmin 嵌套表单重复

ActiveAdmin nested form duplicate

我知道有多个问题的标题与此类似,但我没有找到任何与我的问题相似的问题。如果已经有解决方案,因此我的问题是重复的,我很抱歉 - 我只是没有找到它,不是我没有搜索。

我正在使用 ActiveAdmin 和 ActiveSkin 主题。我的模型 Agent 有一个表单,我想在其中使用嵌套表单来建立 has_many 关系。我部分创建了这段代码:

<%= semantic_form_for [@agent], builder: ActiveAdmin::FormBuilder do |f| %>
    <%= f.semantic_errors %>
    <%= f.inputs 'General Information' do %>
        <%= f.input :name %>
        <%= f.input :description %>
    <% end %>
    <%= f.inputs 'Capture Columns' do %>
        <%= f.has_many :capture_columns, new_record: 'Add Column' do |column| %>
            <%= column.input :column_name %>
            <%= column.input :column_datatype %>
        <% end %>
    <% end %>
    <%= f.actions do %>
        <%= f.action :submit %>
        <li class="cancel"><%= link_to 'Cancel', :back %></li>
    <% end %>
<% end %>

基本上,这是有效的,但看起来像这样:

为什么html重复了(我查了一下,完全一样)?我做错了什么?

编辑: 嵌套形式的内部 HTML 也被复制:

听到循环。这个问题解决起来很简单,只要进入循环并理解它为什么会循环以及如何解决它。你应该使用 binding.pry 来测试它。您可以使用 <% binding.pry %> 在表单中设置断点,或者您可以在服务器日志中打印 <% puts column %> 等变量。

  <%= f.has_many :capture_columns, new_record: 'Add Column' do |column| %>
        <%= column.input :column_name %>
        <%= column.input :column_datatype %>
    <% end %>

并不是说这是正确的行为,但根据 the docs,使用 has_many 时需要避免打印到模板。

尝试在 f.has_many 声明和块中使用 <%-<% 而不是 <%=