2013-01-18 47 views
1

这里是“耙路线”Rails的路由到错误的控制器动作

$ rake routes 
     new_user_session GET /users/sign_in(.:format)   devise/sessions#new 
      user_session POST /users/sign_in(.:format)   devise/sessions#create 
    destroy_user_session DELETE /users/sign_out(.:format)   devise/sessions#destroy 
      user_password POST /users/password(.:format)   devise/passwords#create 
     new_user_password GET /users/password/new(.:format)  devise/passwords#new 
     edit_user_password GET /users/password/edit(.:format)  devise/passwords#edit 
         PUT /users/password(.:format)   devise/passwords#update 
cancel_user_registration GET /users/cancel(.:format)    devise/registrations#cancel 
     user_registration POST /users(.:format)     devise/registrations#create 
    new_user_registration GET /users/sign_up(.:format)   devise/registrations#new 
    edit_user_registration GET /users/edit(.:format)    devise/registrations#edit 
         PUT /users(.:format)     devise/registrations#update 
         DELETE /users(.:format)     devise/registrations#destroy 
       admin_root  /admin(.:format)     admin/dashboard#index 
     admin_dashboard  /admin/dashboard(.:format)   admin/dashboard#index 
       admin_user PUT /admin/users/:id(.:format)   admin/users#update 
batch_action_admin_users POST /admin/users/batch_action(.:format) admin/users#batch_action 
      admin_users GET /admin/users(.:format)    admin/users#index 
         POST /admin/users(.:format)    admin/users#create 
      new_admin_user GET /admin/users/new(.:format)   admin/users#new 
     edit_admin_user GET /admin/users/:id/edit(.:format)  admin/users#edit 
         GET /admin/users/:id(.:format)   admin/users#show 
         PUT /admin/users/:id(.:format)   admin/users#update 
         DELETE /admin/users/:id(.:format)   admin/users#destroy 
        root  /         home#index 

输出这里是从日志

Started POST "/admin/users/batch_action" for 127.0.0.1 at 2013-01-18 23:07:07 +0530 
Processing by Admin::UsersController#create as HTML 

为什么/admin/users/batch_action得到路由到Admin::UsersController#create,当摘录路由显示 batch_action_admin_users POST /admin/users/batch_action(.:format) admin/users#batch_action

我正在使用ActiveAdmin,这些是它生成的路由。

+1

解决了:原来我重写了ActiveAdmin控制器中的自定义创建方法而不是集合操作的成员操作。这导致'/ admin/user/batch_action'被解释为'/ admin/users /:id'的POST,其中:id是_batch_action_ – aagdbl

回答

0

看起来好像您正在使用resources进行路由管理员/用户控制器,因此POST http动词默认为create在控制器中的操作。

如果你想添加一个宁静的POST控制器动作,做这样的事情,

scope "admin" do 
    resources :users do 
    member do 
     post 'batch_action' 
    end 
    end 
end 

我不知道你的routes.rb的样子,所以它可能在你的路由看起来不同。 rb文件。但它应该看起来很相似。

+0

谢谢,您的回答最终导致我做错了什么。 – aagdbl