我有设计宝石的问题,我有这个控制器。
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'
我有三个模板: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'
答案 0 :(得分:0)
答案 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
这使您能够为管理区域创建自定义“仪表板”类型页面,从中您可以使用绑定到模型的控制器。
您的po
和per
行动确实不应该存在 - 它们不属于CRUD系统
关于Devise
次观看,其他答案 正确,因为您最好generate the Devise
views in your app:
rails generate devise:views
这不会解决你的问题(因此我为什么会对其他答案进行投票)。它只会将视图放在您的应用中。除了将代码放在不同的地方之外,它什么都不做。
您需要调试问题:
- 检查您在
看到的操作/users/sign_in
- 检查
中的代码<body>
标签(您尚未显示)- 如果HTML存在,则会出现其他一些阻止其加载的问题
- 如果没有HTML,则可能意味着Devise的核心问题
醇>
我建议你做的是:
<body>
标记的内容 这将使您更清楚地了解潜在问题,并允许其他社区成员更好地定义解决方案。