我具有这种语义嵌套形式,可以销毁Active Admin中的嵌套对象。
= semantic_form_for book.chapters.new, url: {controller: "admin/products", action: :remove_chapter} do |f|
= f.inputs do
li
label Select
= f.collection_select :chapter_product_id, book.chapter_products.order(:name), :id, :name, include_blank: 'Select Chapter'
= f.actions do
= f.action :submit, label: "Remove Chapter"
它工作正常,但是我觉得使用semantic_for_for book.chapters.new
是错误的,因为我实际上没有创建任何东西。
我只是基于集合进行下拉选择以删除对象。
只是想看看是否有比我现在做的更好的方法。
我本来只是想在table_for中添加一个删除按钮,但是即使我在语义_form中使用与控制器完全相同的路由,我也似乎无法正确地指向member_action而没有路由错误。 method: :post
。
尝试了该线程中的许多选项,但均未成功-https://github.com/activeadmin/activeadmin/issues/53
谢谢!
答案 0 :(得分:0)
我只是从另一个简单的角度来考虑它。
我直接链接到嵌套资源的销毁,而不是试图在母对象中执行member_action。
table_for product.chapters do
...
column(:delete) { |c| link_to 'Delete', admin_chapter_path(c), class: 'member_link', method: :delete, 'data-confirm': "Are you sure you want to delete this?" }
end
由于我想重定向回同一页,因此我只是入侵了嵌套对象页面上的controller方法,并从那里管理重定向。
ActiveAdmin.register Chapter do
actions :index, :show, :destroy
controller do
def destroy
...
redirect_back fallback_location: admin_chapter_path, notice: "Message"
end
end
end