Iloo

https://iloo.wordpress.com

Ruby on Rails: formato de enlaces

No se como algo tan básico me haya tomado tantas horas (si, fueron más de una), las características de los requerimientos:

  • Rails funcionando bien, CRUD funcionando.
  • Necesito añadir una nueva acción al controlador jobs, esta se va a llamar closed.
  • Para llamar a la acción closed necesito enviarle el id del job a modificar.

El problema resulta al usar link_to, el enlace generado no tiene el formato correcto.

Se tiene lo siguiente en la vista:

<%= link_to 'Closed', {:controller => 'jobs', :action => 'closed', :id => job} %>

Si en el archivo routes.rb se tiene solo:

resources :jobs

Que se generó de manera automática tenemos el siguiente error (cosa que no entiendo, si ya se esta indicando el recurso jobs… a mi entender):

Routing Error
 No route matches {:controller=>"jobs", :action=>"closed", :id=>#<Job id: 4, name: "job1.php", path: "/home/user/", description: "description1", created_at: "2011-08-12 16:47:14", updated_at: "2011-08-12 16:47:14">}

Hasta aquí pensé que podría solucionarse agregando al archivo routes.rb lo siguiente:

get "jobs/start"

Con esto ya no hay errores, pero los enlaces generados no son correctos:

<a href="/jobs/closed?id=4">Closed</a>

Entonces la solución fue modificar otra vez el archivo routes.rb (habrá que modificar esto para cada enlace a una acción nueva?):

match 'jobs/:id/closed' => 'jobs#closed', :as => :closed

Y con esto se genera los enlaces de manera correcta:

<a href="/jobs/4/closed">Closed</a>

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s