Boa tarde,
Eu estou tentando fazer um sistema de login, mas sempre que eu chamo a função de criar a seção ele acaba me dando esse erro
"undefined method `id’ for nil:NilClass"
Já gastei um tempo procurando mas não consegui descobrir como que eu deveria chamar o ID.
def log_in(user)
**session[:user_id] = user.id #linha do erro**
end
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
def logged_in?
!current_user.nil?
end
O controlador
class SessionController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:session][:email].downcase)
log_in user
redirect_to user
end
def destroy
end
end
(Não sei pq ele não entrou no bloco de código)
A tela de login
<% provide(:title, “Log in”) %>
Log in
<div class= "padding">
<div class="cold-md6 cold-md-offset-3">
<%= form_for(:session, url: login_path) do |f| %>
<%= f.label :email %>
<%= f.email_field :email, class: "form-control" %>
<%= f.label :senha %>
<%= f.password_field :password, class: "form-control" %>
<%= f.submit "Log in", class: "btn btn-primary" %>
<% end %>
<p>Novo usuário? <%= link_to "Cadastre-se agora mesmo =)", cadastro_path %></p>
</div>
E as rotas
Rails.application.routes.draw do
get 'session/new’
get 'users/new’
root 'static_pages#home’
get ‘/contato’, to: 'static_pages#contato’
get ‘/cadastro’, to: 'users#new’
post ‘/cadastro’, to: 'users#create’
get ‘/login’, to: 'session#new’
post ‘/login’, to: 'session#create’
delete ‘/logout’, to: 'session#destroy’
resources :users
end
Caso alguem queira ver o projeto completo