2011-07-25 41 views
2

我有一个路由错误,我根本无法弄清楚!它正在努力,如果有人能提出一个非常感谢的解决方案。Rails 3.1路由错误

我得到的错误: 路由错误 没有路由匹配从下面的按钮

{:控制器=> “项目”:动作=> “create_from_template”,}:

<p><%= link_to "Create from template", create_from_template_project_path %></p> 

在routes.rb中我有:

resources :projects do 
    member do 
     get 'create_from_template' 
    end 
    end 

在课堂上ProjectsController我:

def create_from_template 
    #@project = Project.find(params[:template_id]) 
    #@project.clone 
    redirect_to projects_path 
    end 

这也表明了,当我做“耙路线”

create_from_template_project GET /projects/:id/create_from_template(.:format) {:action=>"create_from_template", :controller=>"projects"} 

任何人有任何想法,为什么它不是工作?

编辑:其实也许我误解了“成员”嵌套的资源路由规则。我没有通过一个项目。我从

改变了按钮

<p><%= link_to "Create from template", create_from_template_project_path(template_project) %></p> 

,现在它的工作原理。感谢所有帮助过的人。

+0

您是否在“rake routes”列表中看到路线? –

+0

rake routes | grep create_from_template – Anatoly

+0

yes我做, create_from_template_project GET /projects/:id/create_from_template(.:format){:action =>“create_from_template”,:controller =>“projects”} – Nick

回答

3

如果你不需要通过项目来创建模板作用,改变按钮: `

 <%= link_to "Create from template", create_from_template_projects_path %>
在路线,而不是
 member do
你应该使用
 collection do

如果您在routes.rb中使用member do,那么您应该在link_to中传递项目,如Prasvin所述

4

尝试的路径发送该项目旁边的link_to