繁体   English   中英

Rails 4中的设计不显示sign_in形式

[英]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视图运行生成器,该视图将复制必要的文件到您的views文件夹中:

跑:

rails g devise:views

这里有更多有关配置Devise视图的信息

您的问题可能与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

这使您能够为管理区域创建自定义的“仪表盘”类型页面,从中可以使用绑定到模型的控制器。

您的poper动作确实不应该存在-他们不是一部分CRUD系统


关于您的Devise视图,其他答案正确的,因为您最好在应用程序中生成Devise视图

rails generate devise:views

这不会解决您的问题(因此,我为什么拒绝其他答案)。 它将只是将视图放入您的应用程序。 除了将代码放在不同的地方,它什么也做不了。

您将需要调试问题:

  1. 检查您在/users/sign_in看到的操作
  2. 检查<body>标记中的代码(未显示)
  3. 如果存在HTML,则会出现其他问题,导致无法加载
  4. 如果没有HTML,则可能意味着Devise核心存在问题

我建议您执行以下操作:

  • 产生您的意见
  • 从您的屏幕截图中, 向我们展示<body>标签的内容
  • 屏幕快照您的控制台日志(这将显示任何错误)
  • 使用以上更新您的问题

这将使您对潜在问题有更清晰的认识,并允许其他社区成员更好地定义解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM