我在projects_controller.rb
class Admin::ProjectsController < ApplicationController
before_filter :require_login
def require_login
while (adminLogin != 'username')
redirect_to admin_login_path and return
end
end
这是application_controller.rb
class ApplicationController < ActionController::Base
# Return the admin user
def adminLogin
@email = params[:email]
@password = params[:password]
return @email
end
end
我正在尝试以该格式收到电子邮件并将其传递给项目控制器,以便在定义电子邮件时,管理员可以登录。当我按下表单上的提交按钮时,我可以看到正在发送的电子邮件通过在表单中使用<%= debug @email %>
到项目控制器,但页面重定向到再次登录。那我怎么去/ projects?
[UPDATE]:
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
# Return the admin user
def redirect_unless_admin
@email = params[:email]
password = params[:password]
if (@email == 'username')
redirect_to admin_projects_path
else
redirect_to admin_login_path
end
端 端
我在projects_controller.rb
中要求使用此方法。这只是打破它,重定向太多次
答案 0 :(得分:1)
如果你需要从ProjectsController调用adminLogin,它应该在ApplicationController中或在从ApplicationController派生的公共父类中定义。
答案 1 :(得分:1)
你应该能够在application_controller中使用它:
class ApplicationController < ActionController::Base
def redirect_unless_admin
email = params[:email]
password = params[:password]
if params[:email].present? && email == 'username'
redirect_to admin_projects_path
else
redirect_to root_path
end
end
end
,这在admin / projects_controller中:
class Admin::ProjectsController < ApplicationController
before_filter :redirect_unless_admin
end
这样,redirect_unless_admin
方法可用于任何继承application_controller的控制器。您可以以任何方式自定义逻辑,以确定要使用哪个重定向,但这应该是一个很好的起点。