Вложенные маршрутизации rout.rb - PullRequest
0 голосов
/ 08 февраля 2012

Я читал темы о маршрутах снова и снова, но ни одна из них не могла мне помочь.Итак, поскольку я все еще новичок в Ruby, моя попытка:

Я хочу, чтобы пользователи имели свои собственные проекты.Эти проекты должны иметь склады, клиентов и transquans.Я хочу, чтобы URL был похож на ~ / user / 1234 / project / 1 / warehouse / ..., так что предоставляется эксклюзивное использование.Вот так выглядит мой rout.rb:

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

Вот как я пытаюсь вызывать проекты из users / show.html.erb [уже пробовал разные варианты, которые все давали мне сообщения об ошибках]

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

При попытке вызвать определенного пользователя я получаю сообщения типа

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

То есть, хотя я создавал проекты с помощью скаффолдинга и никогда не касался действия "show" ...

Попытка выяснить, как исправить это, стоила мне нескольких дней, хотя я думаю, что решение не может быть таким сложным.

РЕДАКТИРОВАТЬ: Теперь я выполнил первые несколько шагов в работе Райана Бейтса. Screencast до 4:52 мин.Тем не менее, при нажатии http://localhost:3000/users/768773789/projects

я получаю еще одно сообщение об ошибке, которое я не понимаю, говоря

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

, в то время как schema.rb выглядит так

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

Все еще благодарен за любую помощь.Это сводит меня с ума.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Проверьте вывод rake routes, он должен сказать вам, что вам нужно знать.

0 голосов
/ 08 февраля 2012

Вспомогательный метод project_path работает только в том случае, если у вас есть проект верхнего уровня с маршрутами, такими как GET /project/id.Это не полностью провал, потому что сущность Project существует.Это только говорит о том, что ни один маршрут не соответствует, что вводит в заблуждение в таких случаях, как этот.

Вам необходим вспомогательный метод user_projects_path, аналогичный magazine_ads_url здесь .

...