2010-11-25 79 views
1

如果我有一個控制器,如何通過URL使用新添加的方法訪問它?添加和訪問控制器在軌道上的紅寶石

原因我很困惑,是因爲我有一個路線,

map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/ 

看來,我不能assignments控制器內訪問的任何其他方法,因爲如果我這樣做

mysite.com/assignments/other_method 

這我們假定other_method是一個我正在傳入show控制器的ID,如上面的路由條目中所指定的那樣。

編輯:

我說這個要頂:

map.connect 'assignments/send/', :controller => "assignments", :action => "send" 

,我現在收到此錯誤:

ArgumentError in AssignmentsController#show 

assignments/send的路線爲任何的第一declration作業控制器

+0

我想你可能在'assignments/send /'之後缺少必要的參數,也許'assignments/send /:id'會起作用?它幾乎肯定應該以某種變量來選擇賦值模型? – dain 2010-11-25 15:58:09

+0

我在這種情況下不使用模型,更具體地說,我從表單中獲取一些值並從中生成電子郵件。 – tipu 2010-11-25 16:00:08

回答

1

你的路由表中應該有它的順序

map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/ 

map.connect 'assignments/send/', :controller => "assignments", :action => "send" 

結束與

map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 

爲您最一般的情況。

0

只需指定正確的路線對於第二種情況,請確保您記住映射從上到下進行評估(第一個匹配得到執行)。