[英]Devise in rails 4 doesn't show sign_in form
我对devise gem有问题,我有这个控制器。
class AdminController < ApplicationController
before_action :authenticate_user!
def index
end
def per
end
def po
end
end
重定向到sign_in表单时,什么都不显示
这些是我的路线:
match 'po' => 'admin#po', :via => :get
match 'per' => 'admin#per', :via => :get
match 'admin' => 'admin#index', :via => :get
match 'admin/index' => 'admin#index', :via => :get
match 'admin/per' => 'admin#per', :via => :get
match 'admin/po' => 'admin#po', :via => :get
devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }
root 'home#index'
我有三个模板:应用程序,管理和主页我登录后覆盖默认路由
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
#before_action :authenticate_user!
def after_sign_in_path_for(resource)
#request.env['omniauth.origin'] || stored_location_for(resource) || admin_path
admin_path
end
end
我安装的最后一个宝石:
gem 'bootstrap-sass'
您的问题可能与Devise
无关,在我看来,这是系统性的。
#config/routes.rb
namespace :admin do
root "application#index" #->
resources :model_controller, path: "", only: :index do #-> url.com/admin/...
collection do
get :po #-> you shouldn't really have this
get :per #-> you shouldn't really have this
end
end
end
devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }
这将为您提供以下内容:
#app/controllers/admin/application_controller.rb
class Admin::ApplicationController < ApplicationController
before_action :authenticate_user!
def index
# do something here
end
end
这使您能够为管理区域创建自定义的“仪表盘”类型页面,从中可以使用绑定到模型的控制器。
您的po
和per
动作确实不应该存在-他们不是一部分CRUD系统
关于您的Devise
视图,其他答案是正确的,因为您最好在应用程序中生成Devise
视图 :
rails generate devise:views
这不会解决您的问题(因此,我为什么拒绝其他答案)。 它将只是将视图放入您的应用程序。 除了将代码放在不同的地方,它什么也做不了。
您将需要调试问题:
- 检查您在
/users/sign_in
看到的操作- 检查
<body>
标记中的代码(未显示)- 如果存在HTML,则会出现其他问题,导致无法加载
- 如果没有HTML,则可能意味着Devise核心存在问题
我建议您执行以下操作:
<body>
标签的内容 这将使您对潜在问题有更清晰的认识,并允许其他社区成员更好地定义解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.