11

Mam NotificationsController, w którym mam tylko akcję clear.Routing routingu: zasoby tylko z niestandardowymi akcjami

Chciałbym uzyskać dostęp do tego działania, wykonując POST/powiadomienia/jasne

Więc napisałem to w moim routerze:

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

Czy istnieje czystsze sposobem osiągnięcia tego celu? Myślałem

scope :notifications do 
    post :clear 
    end 

zrobi to, ale mam błąd missing controller, bo - myślę - wygląda na kontrolerze clear.

Dzięki

Odpowiedz

15

Jeśli używasz zakresu, należy dodać kontroler wygląda

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

lub po prostu używać nazw

namespace :notifications do 
    post 'clear' 
end 
+0

A jeśli potrzebuję zarówno kolekcji do i członek zrobić w nim? Nadal muszę zdefiniować ręcznie 'post '/: id/edit'? –

+0

W twoim przypadku i użyj zakresu lub przestrzeni nazw, tak ('get: edit,: path => '/: id/edit''). Jeśli nie potrzebujesz ręcznie, możesz użyć swojego wpisu na swoim pytaniu. Przeczytaj tutaj http://stackoverflow.com/q/17465335/1297435 –

+3

Tak, mam wrażenie, że ': only => []' jest najbardziej jednoznacznym i mniej hackowskim rozwiązaniem. Dzięki –

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

Proszę rozważyć wyjaśniając dlaczego odpowiedź jest poprawna i co to znaczy robić. – DonBoitnott

+0

Chcę zgrupować wszystkie akcje powiadamiania i mieć w sobie 'method: action', podobnie jak zasoby, ale bez domyślnych akcji, których nie używam. –