11

ho un NotificationsController, in cui ho solo l'azione clear.Rails di routing: risorse con solo azioni personalizzate

vorrei accedere a questa azione facendo POST/notifiche/chiara

Così ho scritto questo nel mio router:

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

C'è un modo più pulito per raggiungere questo obiettivo? Ho pensato

scope :notifications do 
    post :clear 
    end 

lo farebbe, ma ho un errore di missing controller, perché - credo - sembra per il controller clear.

Grazie

risposta

15

Se si utilizza ambito, si dovrebbe aggiungere un controller sembra

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

o semplicemente usare namespace

namespace :notifications do 
    post 'clear' 
end 
+0

E se ho bisogno sia di una collezione che di una di membri? Devo ancora definire manualmente "post" /: id/edit? –

+0

Nel tuo caso e usa scope o namespace, yes ('get: edit,: path => '/: id/edit''). Se non hai bisogno di manualmente, puoi usare il tuo scritto sulla tua domanda. Leggi qui http://stackoverflow.com/q/17465335/1297435 –

+3

Sì, mi sento come il ': only => []' è la soluzione più esplicita e meno hacky. Grazie –

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

perche non spiega il motivo per cui la risposta è corretta e cosa significa fare. – DonBoitnott

+0

Voglio raggruppare tutte le azioni di notifica e avere un 'metodo: azione' in esso, come fanno le risorse, ma senza le azioni predefinite che non uso. –