我一遍又一遍地阅读有关路线的主题,但没有一个可以帮助我。所以,因为我还是Ruby的新手,我的尝试:
我希望用户拥有自己的项目。这些项目将拥有仓库,客户和transquans。我希望URL类似〜/ user / 1234 / project / 1 / warehouse / ...,以便授予独占使用权。这就是我的routes.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”动作......
试图弄清楚如何解决这个问题花费了我几天,而我认为解决方案不会那么难。
编辑:我现在已经按照Ryan Bates'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 :(得分:0)
project_path
辅助方法仅适用于具有GET /project/id
等路线的“顶级”项目。它不会完全失败,因为实体Project
确实存在。它只告诉你没有路由匹配,这在这样的情况下会产生误导。
您需要user_projects_path
辅助方法,类似于magazine_ads_url
here。
答案 1 :(得分:0)
查看rake routes
的输出,它应该告诉你需要知道什么。