Empecé a jugar con Ruby on Rails y tuve un problema al vincular otra acción en un controlador desde una vista particular. Estoy casi seguro de que es un problema (o falta de código) en mi archivo routes.rb
, pero creo que estoy malinterpretando exactamente cómo funciona este archivo & lo que tengo que hacer. Tengo una solución, pero estoy bastante seguro de que no es la "mejor manera" de hacerlo.Uso de Ruby on Rails link_to para vincular a la acción del controlador
he llamado un controlador home
con dos acciones, index
(que es el valor por defecto) y newbill
. Dentro index.html.erb
tengo:
<h1>Home View</h1>
<%= link_to "new", :controller => "home", :action => "newbill" %>
Sin embargo, me estaba poniendo un error de encaminamiento:
No route matches {:controller=>"home", :action=>"newbill"}
Haciendo rake routes
me da lo siguiente:
root/{:controller=>"home", :action=>"index"}
que entonces (después de algunas google) que se añade este código a routes.rb
match 'home/newbill' => 'home#newbill', :as => :newbill
Y luego en mi index.html.erb
Tengo esto:
<%= link_to "Name", newbill_path %>
Y ahora esto funciona como se esperaba. Mis preguntas sin embargo son:
- ¿Por qué funciona esto? ¿Qué está sucediendo exactamente detrás de escena?
- Sin duda, esta no es la mejor manera de hacerlo? Agregar otro
match 'home/newbill'...
para cada controlador/acción que deseo vincular me parece una manera de hacer las tonterías.
Me gusta mucho Ruby, pero luchando un poco con este aspecto de Rails ... ¡enrutar en general me hace perder la cabeza un poco, creo!
Cualquier ayuda es muy apreciada: D
Gracias,
Jack
Sabemos que hay documentos por ahí. -1 si pudiera porque esto no proporciona ninguna ayuda verdadera. – karns
@karns La pregunta de esta persona fue "¿Por qué usar el motor de enrutamiento en la moda prescrita funciona?". Podría escribir laboriosamente la respuesta real (que ya se ha hecho en las guías de enrutamiento de Rails) o simplemente señalarlo. Él quiere entender cómo funciona el enrutamiento y hay un documento oficial y claro que lo explica en gran detalle. ¿No veo el problema? –