2012-02-08 9 views
0

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

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

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

Это, как я пытаюсь вызовом проектов от пользователей/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.... 

То есть, хотя я создал проекты через леса и никогда не прикоснулся к «шоу» действие ...

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

EDIT: Я теперь выполнил первые шаги в Райан Бэйтс 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 

Тем не менее благодарен за любые вид помощи. Меня это смущает.

+0

Запустите команду 'rake routes', чтобы просмотреть текущие маршруты. – taro

+0

Я добавил тег Ruby on Rails в предположении, что это веб-фреймворк, который вы используете. (Ruby - это язык программирования, Rails - это веб-платформа, использующая его.) Если это неверно, исправьте теги и уточните свой вопрос. – Phrogz

+0

Вы должны опубликовать свои 'rake routes' – Zepplock

ответ

0

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

Вам нужен вспомогательный метод user_projects_path, аналогичный magazine_ads_urlhere.

+0

. Я все еще получаю' Нет маршрута {{action} => "show",: controller => "projects"} '. Я пытаюсь сопоставить через 'match 'users /: id/projects',: to => 'users_projects # index''. Может это и ошибка? – Mariushi

0

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

+0

К сожалению, я не вижу никаких проблем с выходом. Я загрузил его изображение на http://dl.dropbox.com/u/45905590/rakeroutes.png – Mariushi

+0

, он сообщает вам, что для просмотра всех проектов для пользователя вы должны использовать 'user_projects_path (user)' и см. конкретный проект пользователя, 'user_project_path (project)' – ksol

Смежные вопросы