很簡單的問題,但我似乎無法找到一個好的谷歌的答案。Rails設計路線:如果用戶登錄,則指向索引。否則,指向新的用戶會話
錯誤:
undefined method `user_signed_in?' for #<ActionDispatch::Routing::Mapper:0x007fc6369320e8> (NoMethodError)
服務器甚至不會啓動。
我的代碼:
Rails.application.routes.draw do
devise_for :users, :path_prefix => 'u'
resources :users
devise_scope :user do
get "login", to: "devise/sessions#new", as: :login
get 'logout', to: 'devise/sessions#destroy', as: :logout
get 'user/edit', to: 'devise/registrations#edit', as: :change_password
end
resources :apps do
resources :elements, controller: 'apps/elements'
end
resources :elements do
resources :features, except: [:index], controller: 'apps/elements/features'
end
if user_signed_in?
root to: 'apps#index'
else
devise_scope :user do
root to: 'devise/sessions#new'
end
end
end
什麼是着手做這項工作的最佳方式是什麼?我很想嘗試解決這個問題,並使網站變得脆弱,成爲一名新的RoR用戶。提前致謝。
你爲什麼不重定向您的控制器動作中的用戶,而不是你的路由 – Cyzanfar
這是一個很好的點。我只是認爲路線是最簡單的方法。我應該如何將它們重定向到設計新會話頁面?到目前爲止,我有'如果user_signed_in? <用戶正在登錄的代碼> else redirect_to <我不知道該怎麼放在這裏>' – Nickdb93