假設(shè)我們在/config/routes.rb中有如下定義
resources :users
resource :user
那么我們在測試中使用user_url
會產(chǎn)生如下錯誤
這是Ruby on Rails的一個bug,而這個bug歷時7年仍未解決学辱,詳見如下資料
- Singular and Plural Rails Routes for the Same Resource
- link_to / form_for doesn't work for singular resource · Issue #1769 · rails/rails · GitHub
有如下兩種workaround:
第一種workaround是改變單數(shù)和復(fù)數(shù)resource定義的順序耗式,即先定義單數(shù)resource敦间,后定義復(fù)數(shù)resource论熙。如下
resource :user
resources :users
這樣一來,我們就可以在測試中使用user_url
了旦签。
第二種workaround是給單數(shù)resource起一個別名破托。如下
resources :users
resource :user, as: :current_user
在測試中肪跋,我們可以使用current_user_url
來代替user_url
。