2009-08-23 153 views
2

我有一些RESTful控制器,並添加了一個自定義方法application_controller。 我沒有改變路線中的任何東西來表明這種新方法。該方法是poll_memos。我已經進入以下網址:導軌路由問題

/groups/1234/poll_memos

我得到以下錯誤:

Unknown action

No action responded to 1234. Actions: create, destroy, edit, index, new, poll_memos, show, and update

兩個問題:既然我沒有修改路線如何軌瞭解poll_memos?其次,由於它似乎知道它,爲什麼它不起作用?

回答

1

我不認爲這是鐵軌自動生成的寧靜路線。這意味着你需要自己添加它。

看看這個question和這個one

而它在操作中因爲它在控制器中,錯誤信息就是打印所有動作。

1

正確的URL是/ groups/poll_memos/1234。在你的例子中,rails認爲你正在嘗試調用名爲「1234」的控制器方法,當然這個方法是不存在的。

Rails知道poll_memos,因爲打印錯誤消息的代碼查看控制器代碼,而不是查看路由。您可以設置路線,以表示有poll_memos方法,但無法通過URL訪問它。

1

這是因爲你是最有可能觸發默認路由:

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

你的URL

/groups/1234/poll_memos 

將映射如下:

{:controller => "groups", :action => "1234", :id => "poll_memos"} 

此外,由於使用的是您需要配置路線的寧靜風格。爲了讓民意調查備忘錄對集合中的物品起作用,您需要修改您的路線以進行如下映射:

map.resources :groups, :member => {:poll_memos => :get}