2013-08-03 82 views
0

獲取路由我想在我的routes.rb中創建一個指向具有pdfdownload方法的「courses」控制器的新路由。該路線應該採用2個參數:course_id和user_id。我認爲它應該是這樣的:Rails通過參數

get "/courses/pdfdownload/:course_id/:user_id" 

課程控制器和一切工作正常,直到我添加上面的行。課程控制器有一個名爲pdfdownload的方法。然而,當我嘗試啓動服務器(軌道S),我收到以下錯誤:

warning: already initialized constant Mime::PDF 
warning: previous definition of PDF was here 
Exiting 
`default_controller_and_action': missing :controller (ArgumentError) 

當我鍵入耙:路線我得到:

missing :controller 

課程控制器現有的和是用很多方法工作得很好。在我將此行更改爲:

get "/courses/pdfdownload" 

服務器啓動。

軌道指導說,在「3.2動態細分」,它必須這樣寫的:

get ':controller/:action/:id/:user_id' 

請告訴我錯在這裏?非常感謝你!

更新:我使用視圖以下鏈接:

<%= link_to "PDF", courses_pdfdownload_path(@course.id, user.id) %> 
+0

也許是這樣的:'得到 「/場/ PDF文檔下載/:COURSE_ID /:USER_ID」:到=>「控制器#action''會的工作? – Brian

+0

服務器啓動,但當我打開鏈接所在的頁面時,出現以下錯誤:#<#:0x007fceafdcb1a0>'未定義的方法'courses_pdfdownload_path'。感謝您的建議! – Linus

回答

1

請試一試

get "/courses/pdfdownload/:course_id/:user_id" => "courses#pdfdownload", :as => "courses_pdfdownload" 
+0

您的解決方案似乎是唯一可行的解​​決方案。你能向我解釋爲什麼從指南路線不工作,你的?謝謝大家! – Linus

+1

您在視圖中使用路線助手「courses_pdfdownload_path」。你可以看到這個路由助手沒有顯示在輸出中,而你沒有明確地定義它。所以,我添加了:as =>「courses_pdfdownload」,並且我在耙路線中獲得了路線助手。 –

+0

非常感謝!這是否意味着如果這個路由幫助程序(在rake:routes的左邊站點)丟失了,實際上我沒有可以爲這個方法調用的路由? – Linus

1

嘗試match "/courses/pdfdownload/:course_id/:user_id" => "courses#pdfdownload"

1

正確的路線是:

get '/courses/pdfdownload/:course_id/:user_id', to: 'courses#pdfdownload' 

但對於一個更好的REST的路線,我寧願它改成這樣:

get '/courses/pdfdownload/:id/:user_id', to: 'courses#pdfdownload' 

與一個Course資源的行動的交易已經由控制器處理動作的名稱隱含的事實。所以你不需要撥打Course ID :course_id,只需:id就夠了。

編輯

還要注意的是,你可以自定義路線助手的名字是這樣的:

get '/courses/pdfdownload/:id/:user_id', to: 'courses#pdfdownload', as: 'courses_pdfdownload' 

您的路線幫手後會有courses_pdfdownload_path