2010-11-30 16 views
6

tengo un controlador "Aplicaciones". Consiste en un "índice" de acción. Ahora quiero añadir una nueva acción denominada "comprar":Crear nueva acción de rieles no funciona?

def buy 
    respond_to do |format| 
    format.html 
    end 
end 

he añadido un buy.html.erb a los puntos de vista, pero cuando se navega a/apps/compra, me sale el siguiente mensaje:

Unknown action - The action 'show' could not be found for AppsController 

en las rutas que añade esto:

match '/apps/buy', :controller => 'apps', :action => 'buy' 

gracias de antemano!

Respuesta

16

La url está atrapada por la ruta estándar /apps/:id, supongo que también tiene resources :apps en sus rutas?

Basta con colocar la ruta de compra en primer lugar:

match '/apps/buy', :controller => 'apps', :action => 'buy' 
resources :apps 

Tenga en cuenta que las rutas se ejecutan en el orden en que se definen, por lo que los específicos deben preceder a la general.

Un enfoque más sencillo como @Ryan sugiere es la adición de una ruta de recolección al recurso:

resources :apps, :collection => { :buy => :get } 
+4

añadir Alternativamente, la acción 'buy' como una ruta de recolección a sus' recursos: apps'. –

+0

@Ryan buen punto, eso sería preferible. –

+0

muchas gracias! – Tronic

Cuestiones relacionadas