【问题标题】:Active Admin CollectionAction route being skipped, action treated as IDActive Admin CollectionAction 路由被跳过,操作被视为 ID
【发布时间】:2015-07-01 16:52:30
【问题描述】:

我正在尝试在 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 错误,当我检查错误日志时,它说,Couldnt find ResponsiveWeb with id=reorder。

任何帮助将不胜感激!

【问题讨论】:

    标签: ruby-on-rails routes activeadmin


    【解决方案1】:

    要声明收集操作,活动管理员提供另一个 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多