2016-09-19 4 views
0

Ich möchte eine Mitgliedaktion mit dem Namen genehmigen auf meinem Benutzermodell in ActiveAdmin hinzufügen. Ich schaute auf Docs, aber alles ist anders und ich bin ziemlich verwirrt darüber, wie es geht. Bis jetzt habe ich es nur geschafft, den genehmigenden Link anzuzeigen (neben Ansicht, Bearbeiten und Löschen).ActiveAdmin: member_action "genehmigen" auf Benutzermodell

admin/user.rb:

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

und den Link zu zeigen:

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

models/user.rb:

def approve! 
    update(bio_validee: true) 
end 

Wenn ich auf den Link klicken, Ich habe einen Routingfehler mit:

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

Hier ist, was rake routes hat (für admin/Benutzer Routen):

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 

ich etwas falsch gemacht? Was muss ich hinzufügen? Außerdem weiß ich nicht, ob ich GET, POST oder PUT in

member_action :approve, method: :post

ich den Unterschied nicht verwenden wirklich in diesem Fall bekommen.

+0

was bedeutet 'rake zeigen routes'? –

+0

Ich habe meinen Beitrag mit dem, was Rake-Routen zurückgibt, bearbeitet –

Antwort

1

Versuchen Sie folgendes:

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

Und ....

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

Es funktioniert gut, danke! –

+0

Froh, zu helfen. Vielleicht möchten Sie auch Batch-Aktionen auschecken. Sie sind nützlich für solche Dinge, besonders dann, wenn ein Admin-Benutzer häufig viele Elemente in einer Sitzung genehmigt. –

Verwandte Themen