预定义的路由不起作用,为什么?
问题描述:
我即将实现编辑项目的功能,但我无法获得工作路线。预定义的路由不起作用,为什么?
的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"}
答
edit_project_path
不知道哪个项目你的意思是编辑。此路由帮助程序将采取Project
实例,然后它将路由到像/projects/1/edit
。也许你打算使用projects_path
?
projects_path
方法将转到ProjectsController's
index
动作,这是(通常情况下)提供项目列表的链接,用于在该页面上编辑它们。
+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
项目ID /对象传递给''像 edit_project_path'方法'或''如果定义了“@ project”。 – 2013-02-10 20:26:29