簡體   English   中英

使用restful操作在rails控制器中自定義操作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM