找不到路径“/”的设计映射。在用户登录之前

时间:2015-07-21 09:38:06

标签: ruby-on-rails ruby-on-rails-4 devise

登录后,我在root

后收到以下错误消息
    Could not find devise mapping for path "/". 

This may happen for two reasons: 

1) You forgot to wrap your route inside the scope block. For example: devise_scope :user do get "/some/route" => "some_devise_controller" end 

2) You are testing a Devise controller bypassing the router. If so, you can explicitly tell Devise which mapping to use: @request.env["devise.mapping"] = Devise.mappings[:user]

路线档案

    Rails.application.routes.draw do

      root 'pages#home'

      devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations", confirmations: "users/confirmations", passwords: "users/passwords" }, :skip => [:sessions]
  as :user do
    get 'sign_in' => 'users/sessions#new', :as => :new_user_session
    post 'sign_in' => 'users/sessions#create', :as => :user_session
    match 'sign_out' => 'users/sessions#destroy', :as => :destroy_user_session,
      :via => Devise.mappings[:user].sign_out_via
  end

    end

即使我有一个route_path,它也会引发错误。

1 个答案:

答案 0 :(得分:0)

尝试在范围块中编写路线。

devise_scope :user do
    # write all your routes inside this block
end

您可以在此处找到有关范围的更多信息

https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes