0

我正在尝试在数据库密码下创建后端,但我无法通过登录页面:P

我的管理员控制器

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,这是正确的,当我输入良好的登录或错误的登录时,什么也没发生,而且没有闪烁看起来很奇怪?从网络服务器控制台输出,我看到 POST 信息通过登录方法.. 我不知道出了什么问题?谢谢你

编辑:当我尝试转到 URL /backend/logout 我得到

Unknown action

    The action 'logout' could not be found for Backend::AdminController

我真的不明白这个:(我是初学者

4

1 回答 1

1

Rails 中的约定之一是,控制器中的公共方法被视为操作。

如果您想为 before_filter 等编写方法,请制作它们privateprotected使 rails 不会将它们作为操作公开。

另一方面,您无法将操作定义为private.

于 2013-07-01T07:12:16.133 回答