[英]Custom actions in rails controller with restful actions?
我在使用scaffold生成的控制器中創建自己的動作時遇到了一些麻煩。
我理解一切都映射到了寧靜的動作,但我正在構建一個用戶控制器,用戶可以登錄/注銷等,但是當我創建動作並在routes.rb中聲明它時,當我訪問用戶/登錄時出現此錯誤
Couldn't find User with id=login
它嘗試使用login作為ID參數,而不是將其用作操作。
的routes.rb
match 'users/login' => 'users#login'
我覺得我在路線上做錯了所以如果有人可以幫助我那會很棒。
謝謝
我假設您的routes.rb
看起來像這樣:
resources :users
match 'users/login' => 'users#login'
問題是Rails使用匹配的第一個路由。 從文檔 :
Rails路由按照指定的順序進行匹配,因此如果您有
resources :photos
get 'photos/poll'
之上的get 'photos/poll'
,resources
行的show
action路線將在get
行之前匹配。 要解決此問題,請將get
行移到resources
行上方 ,以便首先匹配。
因此,要么在 resources :users
之前定義自定義路由resources :users
:
match 'users/login' => 'users#login'
resources :users
...或使用此語法添加更多RESTful操作 :
resources :users do
collection do
match 'login'
end
end
要查看現有路由(及其順序),請從命令行運行rake routes
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.