8

En RoR 3, solo quiero tener un enlace/botón que active alguna acción/método en el controlador. Específicamente, si hago clic en un enlace 'update_specs' en una página, debería ir al método 'update_specs' en el controlador de mis productos. He encontrado sugerencias para hacer esto en este sitio:Rails 3 enlace o botón que ejecuta acción en el controlador

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

Sin embargo, me sale el siguiente error de enrutamiento cuando hago clic en este enlace:

error de enrutamiento No hay coincidencias ruta {: action => "update_specs", : controller => "productos"}

que he leído sobre el enrutamiento pero no entiendo por qué debería tener para encaminar este método si todos los otros métodos son accesibles a través de los recursos: productos .

+0

Debe enrutar este método, porque su acción no es accesible a través de rutas REST estándar generadas con generador de 'recursos'. – MBO

Respuesta

14

Necesita crear una ruta para ello.

Por ejemplo:

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

También por defecto link_to buscará un método GET en sus rutas. Si desea manejar un método POST o PUT necesita especificar añadiendo {:method => :post } o {:method => :put } como un parámetro, como:

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

O puede utilizar en lugar de button_tolink_to que maneja el método POST por defecto.

Cuestiones relacionadas