/ / Enrutamientos anidados route.rb - ruby-on-rails, ruby, anested

Rutas anidadas routes.rb - ruby-on-rails, ruby, anidado

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 № 1

los 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.