2012-10-08 44 views
0

愚蠢的問題...我有兩個不同的功能在一個頁面上,我的views/projects/new.html.erb文件。到目前爲止,我只實現了一個,可以選擇「創建」一個新項目。我想添加其他功能在同一個頁面上顯示的記錄進行排序,是這樣的:Ruby on Rails routes.rb中的每個頁面有多個方法?

<%= link_to "Category", { :controller => "projects", :action => "sortTable", :filter => "Category" }, :remote => true %> 

- 我的routes.rb文件:

Docside::Application.routes.draw do 
    resources :projects 
    resources :categories 
    #get "home/index" 
    root :to => "projects#new" 
    match 'project/new',:controller=>"projects",:action=>"create" 
end 

但我得到的錯誤「沒有路線匹配{:action =>「sortTable」,:controller =>「projects」}「。當我嘗試添加「匹配項目/新」,:控制器=>「項目」,:行動=>「sortTable」「我的其他功能不起作用,並創建功能搞砸了。我應該有什麼呢?

回答

2

試一下:

resources :projects do 
    collection do 
    post :sortTable 
    end 
end 

而且看這個guide

+0

謝謝!我將如何添加「創建」操作(在我的routes.rb的最後一行)? – user1436111

+0

已爲您創建的'resources:projects'路由到ProjectsController爲'POST' HTTP方法創建動作到'/ projects' URL。用'rake routes'檢查它。如果您想要將其他路由添加到默認的REST風格的路由,請使用收集塊,如答案或成員塊中所述。對於其他選項,請參閱答案中的指南。它寫得很好。 –

+0

啊。非常感謝解釋。 – user1436111

2

您只能有一個給定的路徑和方法,組合中的一個途徑。你正試圖在同一條路徑上定義多條路由,所以只有其中一條會起作用(第一條)。你應該沒問題,如果你對這些行爲使用不同的路徑(而不是所有的項目/新的,小心與你現有的路線衝突)

如果你堅持使用rails '約定(如果有人開始編寫代碼,代碼將更容易閱讀)。例如resources :projects已經爲創建操作創建了一個路由。其他操作可以添加像這樣

resources :projects do 
    collection do 
    get :sort_table 
    end 
end 

,設置一個垃圾收集路線(即一個是不是一個具體項目)爲sort_table行動,並建立了一個網址幫手你(sort_table_projects_path)。您可以使用其他語法 - 我鼓勵您查看路由guide