2010-12-18 11 views
10

Antes de los rieles 3.0, agregar una nueva acción a un controlador era fácil.Rails 3.0: agregar nuevas acciones a un controlador

Simplemente agrega un nuevo método foobar a la clase de controlador (denominado mycontroller). Agregue un archivo html en la carpeta de vistas para ese controlador, foobar.html.erb

Luego, si señala el navegador a .../mycontroller/foobar todo funcionó.

Sin embargo, en los carriles 3.0 cuando he añadido una nueva acción como se describe anteriormente, me sale el siguiente error:

No route matches "/mycontroller/foobar"

lo que ha cambiado en los carriles 3.0? ¿Qué estoy haciendo mal?

Respuesta

0

El error lo dice todo. No tiene una ruta correspondiente en su config/routes.rb. Verifica si la ruta predeterminada está comentada. Si es así, necesitaría agregar una ruta para su nueva acción.

19

añadir esto a routes.rb:

get 'mycontroller/foobar' 

Esta ruta de la URL http://mysite.com/foobar a la acción foobar utilizando HTTP GET.

algo más de información:

  1. Tenga en cuenta que la definición de un def foobar en el controlador no es un requisito estricto (a menos que usted tiene que hacer algo en foobar antes de que aparezca la vista) -, pero debe existir la vista. En otras palabras, incluso si el método def foobar no existe en el controlador, aún se representará la vista foobar.html.erb.

  2. Aquí hay un good overview of routes in Rails 3.

  3. Además, en caso de que aún no lo sepa, puede hacer una lista de todas las rutas que conoce de la aplicación usando rake routes. En consecuencia, si la salida de rake routes no muestra la ruta a algún controlador/acción, entonces se producirá el error 'No coincide la ruta'.

+0

1 para la respuesta y el artículo overgview. – Zlatko

Cuestiones relacionadas