/ / Trasy zagnieżdżone routes.rb - ruby-on-rails, ruby, zagnieżdżone

Trasy zagnieżdżone routes.rb - ruby-on-rails, ruby, zagnieżdżone

W kółko czytałem tematy dotyczące tras, ale żaden z nich nie mógł mi pomóc, więc, jako że wciąż jestem nowicjuszem w Ruby, moja próba:

Chcę, aby użytkownicy mieli własne projekty. Projekty te mają mieć magazyny, klientów i tranquans. Chcę, aby adres URL był jak ~ / user / 1234 / project / 1 / warehouse / ..., tak aby przyznano wyłączne korzystanie. Tak wygląda mój plik routes.rb:

resources :users do
resources :projects do
resources :transquans
resources :warehouses
resources :clients
end
end

Tak próbuję wywoływać Projekty od users / show.html.erb [wypróbowałem już różne odmiany, które dały mi komunikaty o błędach]

<strong>Projects</strong> <%= link_to project_path(@user) %>

Próba połączenia się z danym użytkownikiem daje mi takie wiadomości jak

No route matches {:action=>"show", :controller=>"projects", :id=>#<User id: 64810937, name: "Tester 1", email....

To znaczy, mimo że tworzyłem projekty przez rusztowanie i nigdy nie dotknąłem akcji "pokaż" ...

Próba znalezienia rozwiązania tego problemu kosztowała mnie wiele dni, a myślę, że rozwiązanie nie może być takie trudne.

EDYTOWAĆ: Teraz śledzę kilka pierwszych kroków w Ryan Bates " Screencast do 4: 52 min. Niemniej jednak, uderzając http://localhost:3000/users/768773789/projects

Dostaję kolejny komunikat o błędzie, którego nie rozumiem, mówiąc

SQLite3::SQLException: no such column: projects.user_id: SELECT "projects".* FROM     "projects" WHERE ("projects".user_id = 768773789)

podczas gdy schema.rb wygląda tak

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

Wciąż wdzięczny za jakąkolwiek pomoc. To doprowadza mnie do szału.

Odpowiedzi:

0 dla odpowiedzi № 1

The project_path Metoda helpera działa tylko wtedy, gdy masz projekt "najwyższego poziomu", z trasami takimi jak GET /project/id. To nie całkowicie zawodzi, ponieważ byt Project istnieje. Mówi tylko, że nie pasuje do trasy, co wprowadza w błąd w takich przypadkach jak ta.

Potrzebujesz user_projects_path metoda pomocnicza, podobna do magazine_ads_url tutaj.


0 dla odpowiedzi nr 2

Sprawdź wyjście rake routes, powinien ci powiedzieć, co powinieneś wiedzieć.