活动管理员将输入放入输入

Active Admin putting an inputs in an inputs

我试图将一个 ff.inputs 放在一个关于双重嵌套对象的 f.inputs 中,但是 ff.inputs 没有出现。当我将它放入部分时,它会显示但会复制字段。

有人知道解决这个问题的方法吗?

表格:

form do |f|
f.inputs 'Brand Details' do
  f.input :name
  f.input :heritage
end

f.inputs 'Logo', for: [:logo, f.object.logo || Image.new ] do |ff|
  ff.input :file, as: :file, hint: (ff.template.image_tag(ff.object.file.url) if ff.object.file?)
  ff.input :_destroy, as: :boolean, label: 'Remove' unless ff.object.new_record?
end


# render partial: 'banner_form'

f.inputs 'Heritage Banner', for: [:heritage_banner, f.object.heritage_banner || Banner.new] do |hb|
  hb.input :name
  hb.inputs 'Desktop Image*', for: [:desktop_image, hb.object.desktop_image || Image.new ] do |di|
    di.input :file, label: 'Image', as: :file, hint: (di.template.image_tag(di.object.file.url) if di.object.file?)
    di.input :_destroy, as: :boolean, :label => 'Remove' unless di.object.new_record?
  end
  hb.inputs 'Mobile Image*', for: [:mobile_image, hb.object.mobile_image || Image.new ] do |mi|
    mi.input :file, label: 'Image', as: :file, hint: (mi.template.image_tag(mi.object.file.url) if mi.object.file?)
    mi.input :_destroy, as: :boolean, :label => 'Remove' unless mi.object.new_record?
  end
  hb.input :video_url
end

f.inputs 'Header Banner', for: [:header_banner, f.object.header_banner || Banner.new] do |hb|
  hb.input :name
  hb.inputs 'Desktop Image*', for: [:desktop_image, hb.object.desktop_image || Image.new ] do |di|
    di.input :file, label: 'Image', as: :file, hint: (di.template.image_tag(di.object.file.url) if di.object.file?)
    di.input :_destroy, as: :boolean, :label => 'Remove' unless di.object.new_record?
  end
  hb.inputs 'Mobile Image*', for: [:mobile_image, hb.object.mobile_image || Image.new ] do |mi|
    mi.input :file, label: 'Image', as: :file, hint: (mi.template.image_tag(mi.object.file.url) if mi.object.file?)
    mi.input :_destroy, as: :boolean, :label => 'Remove' unless mi.object.new_record?
  end
  hb.input :video_url
end

f.actions
end

使用部分时是这样的:

<%= semantic_form_for [:admin, @brand] do |f| %>
<%= f.inputs 'Heritage Banner', for: [:heritage_banner, f.object.heritage_banner || Banner.new] do |hb| %>
    <%= hb.input :name %>
    <%= hb.inputs 'Desktop Image*', for: [:desktop_image, hb.object.desktop_image || Image.new ] do |di| %>
        <%= di.input :file, label: 'Image', as: :file, hint: (di.template.image_tag(di.object.file.url) if di.object.file?)  %>
        <%= di.input :_destroy, as: :boolean, :label => 'Remove' unless di.object.new_record?  %>
    <% end %>

    <%= hb.inputs 'Mobile Image*', for: [:mobile_image, hb.object.mobile_image || Image.new ] do |mi| %>
        <%= mi.input :file, label: 'Image', as: :file, hint: (mi.template.image_tag(mi.object.file.url) if mi.object.file?)  %>
        <%=  mi.input :_destroy, as: :boolean, :label => 'Remove' unless mi.object.new_record?  %>
    <% end %>

    <%= hb.input :video_url  %>
<% end %>

<%= f.inputs 'Header Banner', for: [:header_banner, f.object.header_banner || Banner.new] do |hb| %>
    <%= hb.input :name %>
    <%= hb.inputs 'Desktop Image*', for: [:desktop_image, hb.object.desktop_image || Image.new ] do |di| %>
        <%= di.input :file, label: 'Image', as: :file, hint: (di.template.image_tag(di.object.file.url) if di.object.file?)  %>
        <%= di.input :_destroy, as: :boolean, :label => 'Remove' unless di.object.new_record?  %>
    <% end %>

    <%= hb.inputs 'Mobile Image*', for: [:mobile_image, hb.object.mobile_image || Image.new ] do |mi| %>
        <%= mi.input :file, label: 'Image', as: :file, hint: (mi.template.image_tag(mi.object.file.url) if mi.object.file?)  %>
        <%=  mi.input :_destroy, as: :boolean, :label => 'Remove' unless mi.object.new_record?  %>
    <% end %>

    <%= hb.input :video_url  %>
<% end %>

我的解决方法是将所有内容都放在部分形式中,然后调用部分形式。

所以在活动管理员中我做了:

form partial: 'form'

并在部分中引入了品牌详细信息字段和徽标。

这也让我能够调用我以前可以调用的图像和横幅部分。

如果有更好的方法,请告诉我。