我尝试在数据库的密码下创建后端,我无法通过登录页面:P
我的AdminController
class Backend::AdminController < ApplicationController
layout :layout
before_filter :authorize, :except => :login
def authorize
if session[:backend] != true
redirect_to backend_login_path
end
end
private
def layout
if session[:backend] == true
"admin"
else
"login"
end
end
def login
employee = Employee.authenticate(params[:name], params[:password])
if employee
session[:backend] = true
redirect_to backend_root_path, :notice => "Logged in!"
else
flash.now.alert = "Invalid login"
end
end
def logout
session[:backend] = nil
redirect_to backend_login_path, :notice => "Logged out!"
end
end
我的路线
match "backend/login" => "backend/admin#login"
match "backend/logout" => "backend/admin#logout"
我的登录页面
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
<% end %>
<h1>Log in</h1>
<%= form_tag backend_login_path do %>
<p>
<%= label_tag :name %><br />
<%= text_field_tag :name, params[:name] %>
</p>
<p>
<%= label_tag :password %><br />
<%= password_field_tag :password %>
</p>
<p class="button"><%= submit_tag "Log in" %></p>
<% end %>
当我继续将url / backend重定向到/ backend / login时,这是正确的 当我进入良好的登录或糟糕的登录没有发生任何事情和没有闪烁出现那奇怪? 从webserver控制台输出,我看到POST信息通过登录方法..我不知道有什么问题?谢谢
编辑:当我尝试转到URL / backend / logout im getting
Unknown action
The action 'logout' could not be found for Backend::AdminController
我真的不明白这一点:(即时通讯
答案 0 :(得分:1)
rails中的一个约定是,控制器中的公共方法被认为是操作。
如果您想为before_filter等编写方法,请将它们设为private
或protected
,以便rails不会将它们作为操作公开。
另一方面,您无法将操作定义为private
。