2015-07-01 1 views
0

Я пытаюсь создать collection_action в ActiveAdmin, который позволяет мне изменить позицию после капли и добавить. Я хочу, чтобы иметь возможность перетащить список в индексе и имеют новые позиции, отправленные через Ajax через запрос пост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 не найдена ошибка, и когда я проверяю журналы ошибок он говорит, не удалось найти 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