2016-09-19 31 views
0

我想在ActiveAdmin中的用戶模型中添加名爲批准的member_action。我看着文檔,但一切都不一樣,我很困惑如何做到這一點。到目前爲止,我只是讓它顯示批准鏈接(旁邊的查看,編輯和刪除)。ActiveAdmin:用戶模型中的member_action「批准」

管理/ user.rb:

member_action :approve, method: :post do 
    user = User.find params[:id] 
    user.approve! 
    redirect_to admin_user_path(user), notice: "Approved!" 
    end 

,並顯示鏈接:

actions defaults: true do |user| 
    link_to 'Approve',approve_admin_user_path(user) 
end 

型號/ user.rb:

def approve! 
    update(bio_validee: true) 
end 

當我點擊鏈接,我有一個路由錯誤:

No route matches [GET] "/admin/users/21/approve" 

這裏什麼rake routes不會(爲管理/用戶線路):

approve_admin_user POST  /admin/users/:id/approve(.:format)    admin/users#approve 
     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 
         admin_user GET  /admin/users/:id(.:format)      admin/users#show 
           PATCH  /admin/users/:id(.:format)      admin/users#update 
           PUT  /admin/users/:id(.:format)      admin/users#update 
           DELETE  /admin/users/:id(.:format)      admin/users#destroy 

難道我做錯了什麼?我需要添加什麼? 此外,我不知道有沒有用GET,POST,或

member_action :approve, method: :post

PUT我真的不明白在這種情況下的差異。

+0

是什麼'耙routes'說明了什麼? –

+0

我使用什麼耙路線返回編輯我的帖子 –

回答

1

試試這個:

member_action :approve, method: :put do 
    resource.approve! 
    redirect_to admin_user_path(resource), notice: "Approved!" 
end 

而且....

actions defaults: true do |user| 
    link_to 'Approve',approve_admin_user_path(user), method: :put 
end 
+0

它運作良好,謝謝! –

+0

很高興幫助。您也可能想要查看批處理操作。它們對於這樣的事情非常有用,特別是當管理員用戶經常在同一時間批准許多項目時。 –