有没有办法从自定义成员操作中使用ActiveAdmin的表单dsl?
我想保留has_many语义以避免必须自己从头开始实现它,但我想要一个单独的表单视图。
这样的事情是理想的:
member_action :subject, method: :get do
@subject = Subject.find(params[:id])
form do |f|
f.inputs do
f.input :name, :required => true, :input_html => {:class => "large"}
end
end
end
答案 0 :(得分:1)
Arbre似乎不支持表格格式,因此我无法在.arb
文件中使用表格。但是,您可以在.erb
文件中使用formtastic。因此,虽然它没有使用ActiveAdmin的DSL包装器进行格式化,但语法类似:
# app/admin/foo.rb
ActiveAdmin.register Foo do
member_action :subject, method: [:get, :patch] do
if request.get?
render :some_custom_view
else
# handle update or whatever else you would like to do on form submit
# if resource.update(...)
# redirect_to ...
# else
# render :some_custom_view
# end
end
end
end
# app/views/admin/foo/some_custom_view.html.erb
<%= semantic_form_for [:admin, resource], url: subject_admin_foo_path(resource) do |f| %>
<%= f.semantic_errors(*f.object.errors.keys) %>
<%= f.inputs do %>
<%= f.input :name %>
<% end %>
<%= f.actions %>
<% end %>
答案 1 :(得分:0)
你可以在.arb模板中使用DSL,如http://www.activeadmin.info/docs/8-custom-actions.html#rendering_in_custom_actions
中所述对于内联版本,你应该尝试创建一个Arbre :: Context并加载正确的帮助