设计导轨4并不显示sign_in形式

时间:2015-10-10 14:13:18

标签: ruby-on-rails ruby devise

我有设计宝石的问题,我有这个控制器。

class AdminController < ApplicationController
  before_action :authenticate_user!
  def index
  end

  def per
  end

  def po        
  end
end

重定向到sign_in表单时,不显示任何内容

sign_in form

这些是我的路线:

  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'

我有三个模板:application,admin和home 我在登录后覆盖默认路由

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'

2 个答案:

答案 0 :(得分:0)

您需要为Devise视图运行生成器,该视图将复制views文件夹中的必要文​​件:

执行命令

rails g devise:views

有关配置设计视图here

的更多信息

答案 1 :(得分:0)

您的问题可能不在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次观看,其他答案 正确,因为您最好generate the Devise views in your app

rails generate devise:views

这不会解决你的问题(因此我为什么会对其他答案进行投票)。它只会将视图放在您的应用中。除了将代码放在不同的地方之外,它什么都不做。

您需要调试问题:

  
      
  1. 检查您在/users/sign_in
  2. 看到的操作   
  3. 检查<body>标签(您尚未显示)
  4. 中的代码   
  5. 如果HTML存在,则会出现其他一些阻止其加载的问题
  6.   
  7. 如果没有HTML,则可能意味着Devise的核心问题
  8.   

我建议你做的是:

  • 生成您的观点
  • 在屏幕截图中,向我们展示<body>标记的内容
  • 屏幕截图您的控制台日志(这将显示任何错误)
  • 使用上述
  • 更新您的问题

这将使您更清楚地了解潜在问题,并允许其他社区成员更好地定义解决方案。