У меня есть два вспомогательных метода ниже.
helpers do
def logged_in?
!current_user.nil?
end
def current_user
@current_user ||= User.find(session[:user_id])
end
Я использую эти методы для проверки подлинности, вошел ли пользователь в систему или ему нужно войти в систему или создать учетную запись.На моей странице индекса у меня есть два маршрута, которые ведут меня либо на страницу входа, либо на страницу создания пользователя.Эти маршруты показаны ниже.
Просмотр HTML
<html>
<head>
<title>Simple Meal Prep</title>
<link href="https://fonts.googleapis.com/css?family=Caveat"
rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/stylesheet.css" />
</head>
<body>
<h1 id="landing_page_title">Welcome to Cookbook</h1>
<h2 id="site_logline">A Simple App to keep track of your recipes</h2>
<br></br>
<a id="login_button" href="/login">Login</a> <route 1>
<br></br>
<a id="signup_button" href="/signup">Sign Up</a> <route 2>
</body>
Соответствующие маршруты контроллера пользователя
class UserController < ApplicationController
get '/user_home' do
if logged_in? then erb :"/users/user_home" else redirect '/' end
end
get '/login' do
if logged_in? then redirect to '/user_home' else erb :"/users/login"
end
end
end
Ошибкая получаю, когда я нажимаю на кнопку входа в систему и получаю ошибку sinatra, в которой говорится: «ActiveRecord :: RecordNotFound at / login Не удается найти пользователя без идентификатора».Глядя на след от Синатры, я не верю, что мой logged_in?метод работает правильно.Мне интересно, есть ли у кого-нибудь предложения о том, какие шаги предпринять дальше, или я вижу что-то, чего я не вижу.Я могу включить любой дополнительный код или схему, если это необходимо.Благодарю.