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 № 1The 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ć.