2011-12-06 51 views
0

我有一個Rails 3.1應用程序,我剛剛得到一些奇怪的行爲。是否有像``controller#action``這樣的路線與`:controller =>'controller'`和`:action =>'action'`不一樣?

我有兩個途徑聲明如下:

# OLD METHOD 
get 'accept_terms', :to => "users_terms#show" 
put 'accept_terms', :to => "users_terms#accept'" 

運行rake routes包括以下內容:

# accept_terms 
# GET /accept_terms(.:format) {:action=>"show", :controller=>"users_terms"} 
# PUT /accept_terms(.:format) {:action=>"accept'", :controller=>"users_terms"} 

GET工作得很好,但PUT產生這個錯誤:

AbstractController::ActionNotFound (The action 'accept'' could not be found for UsersTermsController): 

我確認該行爲確實存在在那個控制器上。

而有問題擺弄周圍,我改變了路線聲明到:

get 'accept_terms', :controller => 'users_terms', :action => 'show' 
put 'accept_terms', :controller => 'users_terms', :action => 'accept' 

運行產生rake routes

# accept_terms 
# GET /accept_terms(.:format)  {:controller=>"users_terms", :action=>"show"} 
# PUT /accept_terms(.:format)  {:controller=>"users_terms", :action=>"accept"} 

這樣,既GETPUT正常工作。

:to => "controller#action:controller => 'controllerName', :action => 'actionName'不一樣

我在製作路線看到的唯一的區別是:action:controller你既單引號和雙引號結束users_terms#accept ...的順序

回答

2

在舊的方法。

+0

靠天哪,你是對的。那麼,我會投票刪除這個問題。理由:羞恥/「太局部」。 :) –

相關問題