我做了一個簡單的應用程序與數據庫交互,驗證和授權用戶之後,可以執行CRUD操作。它曾經工作時,有一個單一的表,但只要我開始玩嵌套關係和認證機制,我得到的錯誤。到目前爲止,我認爲我已經做好了一切。下面是錯誤的截圖:Ruby on Rails的拋出錯誤wihen重定向到root_path或login_path
這裏是我的routes.rb:
Rails.application.routes.draw do
root to: "todo_lists#index"
resources :todo_lists do
resources :todo_items
end
resources :sessions, only: [:new, :create, :destroy]
get "/login" => "sessions#new", as: "login"
delete "/logout" => "sessions#destroy", as: "logout"
end
我的會話控制器:
class SessionsController < ApplicationController
def new
end
def create
@user = User.find_by(username: params[:username])
@password = params[:password]
end
if @user && @user.authenticate(password)
session[:user_id] = @user.id
redirect_to root_path, notice: "Logged in successfully"
else
redirect_to login_path, alert: "Invalid Username/Password combination"
end
def destroy
reset_session
redirect_to login_path, notice: "You have been logged out"
end
end
哦,我修改了ApplicationController中因此路線應儘管如此工作:
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_action :ensure_login
helper_method :logged_in?, :current_user
protected
def ensure_login
redirect_to login_path unless session[:user_id]
end
def logged_in?
session[:user_id]
end
def current_user
@current_user ||= User.find(session[:user_id])
end
end
謝謝,這對我來說太無聊了。 –