11

Ich habe eine NotificationsController, in der ich nur die Aktion clear habe.Rails Routing: Ressourcen mit nur benutzerdefinierten Aktionen

ich diese Aktion zugreifen möchte durch POST tun/Meldungen/clear

Also schrieb ich in meinem Router:

resources :notifications, :only => [] do 
    collection do 
     post :clear 
    end 
    end 

Gibt es einen sauberen Weg, dies zu erreichen? Ich dachte

scope :notifications do 
    post :clear 
    end 

würde es tun, aber ich habe einen missing controller Fehler, weil - ich glaube - es sieht für die clear Controller.

Dank

Antwort

15

Wenn Sie Rahmen verwenden, sollten Sie einen Controller sieht aus wie

scope :notifications, :controller => 'notifications' do 
    post 'clear' 
end 

Oder nur Namespace

namespace :notifications do 
    post 'clear' 
end 
+0

Und wenn ich sowohl eine Sammlung brauche, als auch ein Mitglied mache? Ich muss noch das 'post '/: id/edit' manuell definieren? –

+0

In Ihrem Fall und verwenden Sie Scope oder Namespace, yes ('get: edit,: path => '/: id/edit''). Wenn Sie nicht manuell benötigen, könnten Sie Ihre schrieb auf Ihre Frage verwenden. Lies hier http://stackoverflow.com/q/17465335/1297435 –

+3

Ja, ich fühle mich wie das ': only => []' ist die expliziteste und weniger hacky Lösung. Vielen Dank –

1
post "notifications/clear" => "notifications#clear" 
+1

Bitte beachten Sie erklären, warum Sie Ihre Antwort richtig ist verwenden hinzufügen und was es bedeutet zu tun. – DonBoitnott

+0

Ich möchte alle Benachrichtigungsaktionen gruppieren und eine "Methode: Aktion" darin haben, wie die Ressourcen, aber ohne die Standardaktionen, die ich nicht verwende. –