2015-07-01 21 views
0

我想在ActiveAdmin中创建一个collection_action,它允许我在删除和添加后重新排列位置。我希望能够在索引中拖放列表并通过Ajax通过post请求Active Admin CollectionAction路由被忽略,动作被视为ID

这送来的新职位是什么,我到目前为止有:

ActiveAdmin.register Subscriber do 

collection_action :reorder, :method => :post do 
end 

controller do 

def reorder 

    @item = ResponsiveWeb.find(params[:id]) 
    @item.position = params[:position] 
    @item.saved 
    render nothing: true 

end 


private 

def item_params 
    params.require(:responsive_web).permit(:id, :position) 
end 
end 

这些路线:

Prefix Verb  URI Pattern         Controller#Action 
     new_admin_user_session GET  /admin/login(.:format)      active_admin/devise/sessions#new 
      admin_user_session POST  /admin/login(.:format)      active_admin/devise/sessions#create 
    destroy_admin_user_session DELETE|GET /admin/logout(.:format)      active_admin/devise/sessions#destroy 
      admin_user_password POST  /admin/password(.:format)      active_admin/devise/passwords#create 
     new_admin_user_password GET  /admin/password/new(.:format)     active_admin/devise/passwords#new 
     edit_admin_user_password GET  /admin/password/edit(.:format)    active_admin/devise/passwords#edit 
           PATCH  /admin/password(.:format)      active_admin/devise/passwords#update 
           PUT  /admin/password(.:format)      active_admin/devise/passwords#update 
        admin_root GET  /admin(.:format)        admin/dashboard#index 
batch_action_admin_admin_users POST  /admin/admin_users/batch_action(.:format)  admin/admin_users#batch_action 
      admin_admin_users GET  /admin/admin_users(.:format)     admin/admin_users#index 
           POST  /admin/admin_users(.:format)     admin/admin_users#create 
      new_admin_admin_user GET  /admin/admin_users/new(.:format)    admin/admin_users#new 
     edit_admin_admin_user GET  /admin/admin_users/:id/edit(.:format)   admin/admin_users#edit 
       admin_admin_user PATCH  /admin/admin_users/:id(.:format)    admin/admin_users#update 
           PUT  /admin/admin_users/:id(.:format)    admin/admin_users#update 
           DELETE  /admin/admin_users/:id(.:format)    admin/admin_users#destroy 
       admin_dashboard GET  /admin/dashboard(.:format)     admin/dashboard#index 
    sort_admin_responsive_web POST  /admin/responsive_webs/:id/sort(.:format)  admin/responsive_webs#sort 
reorder_admin_responsive_webs POST  /admin/responsive_webs/reorder(.:format)  admin/responsive_webs#reorder 

然而,当我重新安排我得到的404未找到错误,当我检查它说的错误日志,无法使用id =订货找到ResponsiveWeb。

任何帮助将不胜感激!

回答

0

要声明一个收集操作,活动管理员提供另一个dsl。这是一个例子。你可以试试。

collection_action :reorder, method: :post do 
    # your resources or whatever you need 
end 

有一点,活动管理资源DSL提供了一个permit_params,所以你不需要在你的控制器上声明它。

希望此回答有帮助。

这里是参考: http://activeadmin.info/docs/8-custom-actions.html