预定义的路由不起作用,为什么?

问题描述:

我即将实现编辑项目的功能,但我无法获得工作路线。预定义的路由不起作用,为什么?

的routes.rb:

Ampta::Application.routes.draw do 
    get "home/index" 

    resources :projects 
    resources :tickets 
    resources :projects_users 
    resources :users 

    ... 
end 

多数民众赞成链接到路径的观点:

... 
<%= link_to "Show tickets", tickets_path%><br/> 
<%= link_to "Manage projects", edit_project_path %><br/> // <--- The link 
<%= link_to "Log out", signout_path, method: "delete"%> 
... 

(我已在项目中定义控制器的动作 '编辑',但它还没有包含任何代码。)

当运行rake路由时,路由在那里,为什么我ge T,则下面的错误解释说,并非如此:

No route matches {:action=>"edit", :controller=>"projects"} 
+1

项目ID /对象传递给''像 edit_project_path'方法'或''如果定义了“@ project”。 – 2013-02-10 20:26:29

edit_project_path不知道哪个项目你的意思是编辑。此路由帮助程序将采取Project实例,然后它将路由到像/projects/1/edit。也许你打算使用projects_path

projects_path方法将转到ProjectsController'sindex动作,这是(通常情况下)提供项目列表的链接,用于在该页面上编辑它们。

+0

太好了,谢谢你让我更清楚。 :) – holyredbeard 2013-02-10 21:18:54

您需要传递正在编辑的项目的记录。 在你的show.html.erb中,你最好有类似的东西;

<%= link_to "Manage project", edit_project_path(@project) %> 

和在控制器

def show 
    Product.find(params[:id]) 
end