正在跳过Active Admin CollectionAction路由,将操作视为ID

时间:2015-07-01 16:52:31

标签: ruby-on-rails routes activeadmin

我试图在ActiveAdmin中创建一个collection_action,这允许我在删除和添加后重新排列位置。我希望能够将列表拖放到索引中,并通过发布请求通过Ajax发送新位置

这是我到目前为止所做的:

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 not found错误,当我检查错误日志时,它找不到具有id = reorder的ResponsiveWeb。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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