当我在我的页面上登录时,我会自动转到路线:http://localhost:3000/sessions/user
我收到了这个错误:
Routing Error
No route matches "/sessions/user"
我在users文件夹中创建了一个名为sessions_controller.rb的控制器,它是:
class Users::SessionsController < Devise::SessionsController
def new
redirect_to root_url, :notice => "You have been logged out."
end
def create
user = User.authenticate(params[:login], params[:encrypted_password])
if user
session[:user_id] = user.id
redirect_to root_url, :notice => "Logged in successfully."
else
flash.now[:alert] = "Invalid login or password."
render :action => 'new'
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, :notice => "You have been logged out."
end
end
我的路线档案:
Densidste::Application.routes.draw do
match 'user/edit' => 'users#edit', :as => :edit_current_user
devise_for :users, :controllers => { :sessions => "users/sessions" } do
get "login", :to => "devise/sessions#new"
get "opret", :to => 'users/users#new'
get "logud", :to => 'users/users#destroy'
end
resources :sessions
resources :users
devise_for :users, :controllers => { :sessions => "users/sessions" }
resources :aktivs
resources :taggingposts
resources :tags
resources :kommentares
resources :posts
end
答案 0 :(得分:7)
(老问题,但我在设置Devise时遇到了同样的问题,所以希望这有助于其他人)
从路径文件中删除resources :sessions
可以解决问题。
答案 1 :(得分:2)
对于使用Devise 2.0
和Rails 3.2.1
遇到此问题并检查了@Micah Alcorn所做的所有观察但仍然面临问题的人 - 重新启动您的网络服务器。为我工作。
答案 2 :(得分:0)
您没有定义root_url
。它仍然指向静态public / index.html。 (Ryan Bigg编辑)
devise_for :users
被陈述两次。
resources :users
是不必要的。
事实上,你是否也有第一个编辑动作的“用户”控制器?这应该是自定义Users::RegistrationsController < Devise::RegistrationsController
。