【发布时间】:2013-11-03 01:48:06
【问题描述】:
尽可能多地关注 Wiki,我可以摆脱它,但完成起来有点困难。我以前用过 Devise,但我想了解 Devise 的新功能,所以我来了。
我遇到的问题是用户没有登录并被重定向。这是我到目前为止所拥有的。任何投入将不胜感激。谢谢!
设计移至views/admin/sessions/的视图
-> 路线
VnGrill::Application.routes.draw do
devise_for :admins, controllers: { sessions: 'admin/sessions' }, skip: [:sessions]
devise_scope :admin do
get 'signin', to: 'admin/sessions#new', as: :new_admin_session
post 'signin', to: 'admin/sessions#create', as: :admin_session
delete 'signout', to: 'admin/sessions#destroy', as: :destroy_admin_session,via:
Devise.mappings[:admin].sign_out_via
end
scope module: :admin do
resources :dashboard
end
root to: 'static_pages#index'
end
-> Admin::DashboardController
class Admin::DashboardController < ApplicationController
layout 'dashboard'
before_filter :authenticate_admin!
def index
end
end
-> Admin::SessionsController
class Admin::SessionsController < Devise::SessionsController
layout 'dashboard'
def new
super
# My thought here was just to call super
# and let Devise handle as normal w/o defining anything custom
end
def create
super
end
def destroy
super
end
def resource_name
:admin
end
def resource
@resource ||= Admin.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:admin]
end
end
-> 会话/新
.form-signin
%h2.form-signin-heading VN Grill Dashboard
= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
= devise_error_messages!
= f.email_field :email, class: 'form-control', autofocus: true, placeholder: 'Email'
%br/
= f.password_field :password, class: 'form-control', placeholder: 'Password'
= f.submit 'Login', class: 'btn btn-lg btn-danger btn-block pull-left'
【问题讨论】:
-
它实际上并没有让用户登录。如果我注册,那么它可以工作,但如果我尝试以我刚刚创建的用户身份登录,它只会重新呈现登录表单并url 填充了请求参数,就好像它是一个获取请求一样。
-
请出示登录表单模板
-
比利,我将它添加到我上面的原始帖子中。谢谢!
-
一切正常。我想知道 `session_path(resource_name) 是否可以生成正确的路径,您可以检查原始 html。如果不确定,最好写一些测试。
标签: ruby-on-rails devise ruby-on-rails-4