【问题标题】:ActiveAdmin nested form duplicateActiveAdmin 嵌套表单重复
【发布时间】:2017-03-13 13:44:33
【问题描述】:

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

我正在使用带有 ActiveSkin 主题的 ActiveAdmin。我的模型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 也是重复的:

【问题讨论】:

  • Rails 版本? ActiveAdmin 的版本? (尝试pre5)。我的第一反应是重写 Arbre 中的部分(.arb 不是 .erb),例如。 activeadmin.info/5-forms.html
  • Rails 5.0.2 和来自当前主分支的 AA。为什么你认为 abre 效果更好?
  • Fivell 在 GH 问题中提到,使用 .arb 的测试比 .erb 好得多,这更像是事后的想法。
  • Arbre 中的 f.inputs 覆盖并与仅使用 Formtastic 的 f.inputs 略有不同。

标签: ruby-on-rails forms activeadmin


【解决方案1】:

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

尝试在f.has_many 声明和阻止中使用&lt;%- 或&lt;% 而不是&lt;%=。

【讨论】:

  • 我很确定它会起作用,我昨天自己遇到了这个! xD
  • 我还必须将&lt;% 用于has_many 块本身,但是是的,它有效!非常感谢!
  • 是的,事实上,这是唯一需要改变的地方!我会澄清答案。
  • 不行,我也不能在has_many里面使用&lt;%=,否则内容会被打印两次
  • 嗯嗯。我以为我试过了,但既然这是文档所说的,而且你肯定已经试过了……我接受了你的编辑!谢谢:)
【解决方案2】:

有一个循环听到。这个问题很容易解决,只需进入循环并了解它为什么会循环以及如何解决它。你应该使用binding.pry 来测试它。您可以使用&lt;% binding.pry %&gt; 在表单中设置断点,也可以在服务器日志中打印&lt;% puts column %&gt; 等变量。

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

【讨论】:

  • 我试试看
  • 我在使用 pry 时遇到了困难,但我尝试使用普通控制台对其进行调试,但无法提取任何有用的信息...
  • @FlorianKoch 如果您在服务器日志中打印 2 个变量 在 f.has_many :capture_columns 之前并在该 Vielen Dank :)
  • 第一个(稍微修改为f.object.capture_columns)不输出任何东西,column 打印为#&lt;ActiveAdmin::FormBuilder:0xd021068&gt; 和column.input 不是我可以放的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
相关资源
最近更新 更多