2011-07-25 158 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