He leído temas sobre rutas una y otra vez, pero ninguno de ellos me pudo ayudar. Entonces, como todavía soy nuevo en Ruby, lo intento:
Quiero que los usuarios tengan sus propios proyectos. Estos proyectos son para tener almacenes, clientes y clientes. Quiero que la URL sea como ~ / user / 1234 / project / 1 / warehouse / ..., para que se otorgue un uso exclusivo. Así es como se muestra mis rutas.rb:
resources :users do
resources :projects do
resources :transquans
resources :warehouses
resources :clients
end
end
Así es como trato de llamar a los proyectos desde usuarios / show.html.erb [ya probé diferentes variaciones que me dieron mensajes de error]
<strong>Projects</strong> <%= link_to project_path(@user) %>
Tratar de llamar a un usuario dado me da mensajes como
No route matches {:action=>"show", :controller=>"projects", :id=>#<User id: 64810937, name: "Tester 1", email....
Es decir, aunque creé los Proyectos a través de andamios y nunca toqué la acción "show" ...
Tratar de averiguar cómo arreglar esto me costó días, aunque creo que la solución no puede ser tan difícil.
EDITAR: He seguido los primeros pasos en Ryan Bates " Screencast hasta las 4: 52min. Sin embargo, al golpear http://localhost:3000/users/768773789/projects
Recibo otro mensaje de error que no entiendo, diciendo
SQLite3::SQLException: no such column: projects.user_id: SELECT "projects".* FROM "projects" WHERE ("projects".user_id = 768773789)
mientras que el schema.rb se ve así
create_table "clients", :force => true do |t|
t.string "name"
t.string "codename"
t.integer "demand"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "projects", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
Todavía agradecido por cualquier tipo de ayuda. Esto me vuelve loco.
Respuestas
0 para la respuesta № 1los project_path
El método auxiliar solo funciona si tiene un proyecto de "nivel superior", con rutas como GET /project/id
. No falla completamente, porque una entidad Project
existe. Solo le dice que ninguna ruta coincide, lo cual es engañoso en casos como este.
Necesitas el user_projects_path
método auxiliar, similar al magazine_ads_url
aquí.
0 para la respuesta № 2
Echa un vistazo a la salida de rake routes
, debería decirte lo que necesitas saber.