8

In RoR 3, voglio solo avere un collegamento/pulsante che attiva qualche azione/metodo nel controller. Nello specifico, se clicco su un link 'update_specs' su una pagina, dovrebbe andare al metodo 'update_specs' nel mio controller prodotti. Ho trovato i suggerimenti per fare questo su questo sito:Rails 3 collegamento o pulsante che esegue l'azione nel controller

link_to "Update Specs", :controller => :products, :action => :update_specs 

Tuttavia, ottengo il seguente errore di routing quando clicco su questo link:

errore di routing Nessun percorso partite {: action => "update_specs", : Controller => "prodotti"}

che ho letto su di routing, ma non capisco perché dovrei avere per indirizzare questo metodo se tutti gli altri metodi sono accessibili tramite risorse: prodotti .

+0

È necessario eseguire il routing di questo metodo, poiché l'azione non è accessibile tramite le rotte REST standard generate con il generatore 'resources'. – MBO

risposta

14

È necessario creare un percorso per questo.

Per esempio:

resources :products do 
    put :update_specs, :on => :collection 
end 

anche per default link_to sarà cercare un metodo GET nei vostri percorsi. Se si desidera gestire un metodo POST o PUT è necessario specificare con l'aggiunta di {:method => :post } o {:method => :put } come parametro, come:

link_to "Update Specs", {:controller => :products, :action => :update_specs}, {:method => :put } 

Oppure si può utilizzare al posto di button_tolink_to che gestisce il metodo POST per impostazione predefinita.

Problemi correlati