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 にリダイレクトされます。正常なログインまたは不正なログインを入力すると、何も起こらず、フラッシュが表示されません。Web サーバー コンソールの出力から、POST 情報がログイン メソッドを通過していることがわかります。何が問題なのかわかりません。ありがとうございました

編集: URL /backend/logout にアクセスしようとすると、取得します

Unknown action

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

私は本当にこれを理解していません:(初心者です

4

1 に答える 1

1

Rails の規則の 1 つは、コントローラーのパブリック メソッドはアクションと見なされることです。

before_filter などのメソッドを書きたい場合は、レールがアクションとして公開しないようにprivate作成してください。protected

反対に、アクションを として定義することはできませんprivate

于 2013-07-01T07:12:16.133 に答える