应用程式无法建立工作阶段,而@current_user无法运作

时间:2019-01-04 00:24:37

标签: ruby-on-rails ruby

我这里有一些代码,应该在登录时创建一个会话并创建“ @current_user”。但是,这些东西都不起作用,经过两天的猜测,我不知道为什么。

用户控制器:

class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create 
    @user = User.new(user_params)
    if @user.save
      redirect_to login_path
       flash[:success] = "Account created. You may now log in"
    else
      redirect_to '/signup'
      flash[:warning] = "Something went wrong. Try again."
    end
  end

  private

  def user_params
    params.require(:user).permit(:username, :jabber_id, :password)
  end
end

会话控制器:

class SessionsController < ApplicationController
  def new
  end

  def create
    @user = User.find_by_username(params[:session][:name])
    if @user && @user.authenticate(params[:session][:password])
      session[:user_id] = @user.id
      redirect_to '/posts'
    else
      session[:user_id] = nil
      flash[:warning] = "Failed login- try again"
      redirect_to '/login'
    end 
  end

  def destroy
    session[:session_id] = nil 
    redirect_to login_path 
  end
end

应用程序控制器:

class ApplicationController < ActionController::Base
  def current_user
    return unless session[:user_id]
    @current_user ||= User.find(session[:user_id])
  end

  def require_user 
    redirect_to '/login' unless current_user 
  end
end

0 个答案:

没有答案