【发布时间】:2017-10-04 16:57:45
【问题描述】:
我有一个在 Rails 3.x 和 ActiveAdmin 0.6.6 上运行良好的 Rails 应用程序。但是我想将它升级到 Rails 5 和 ActiveAdmin 1.x。我开始升级过程,首先从 3.x 升级到 4.x,然后升级到 5x,并使用 ActiveAdmin 我用 1.0.0 进行了测试,现在我使用的是 Github 的 master。
在 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 %> 将被渲染,如果我删除后者,则相同。在其他情况下,在包含end 的最后一个块上呈现。
在 Rails 4.x 和 5.x 上观察到相同的行为(Rails 5.1.x 除外,我没有测试过)。
如果我将表单从部分移动到app/admin/menu.rb,它会正确呈现。这对我来说可能是一个解决方案,但是我有其他表单使用 JQuery 进行字段操作和前端的其他内容。
正如我之前所说,所有这些表单部分都在 Rails 3.x 和 ActiveAdmin 0.6.6 上正常工作。
谁知道问题出在哪里?
免责声明:我不是 Rails 或 ActiveAdmin 专家,如果是与此问题相关的愚蠢错误,请多多包涵。
【问题讨论】:
标签: ruby-on-rails-3 ruby-on-rails-5 activeadmin