ich diesen Fehler während in Schaltfläche in Form Log klicken:Rails nicht definierte Methode für nil: NilClass
undefined method `[]' for nil:NilClass
Ansicht mit Anmeldeformular unten:
<%= form_for(:session, url: login_path) do |f| %>
<%= f.text_field :login, :placeholder => "login" %>
<%= f.password_field :password, :placeholder => "Password" %>
<%= f.submit "Log in", class: "btn-submit"%>
<% end %>
SessionsController:
class SessionsController < ApplicationController
def new
end
def create
@user = User.find_by_login(params[:login][:password]) ////ERROR LINE
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = @user.id
redirect_to '/'
else
flash.now[:danger] = 'err'
redirect_to '/login'
end
end
def destroy
session[:user_id] = nil
redirect_to '/'
end
end
Benutzercontroller:
class UsersController < ApplicationController
def new
@users = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
current_user = @user.id
redirect_to @user
else
redirect_to '/login'
end
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :login)
end
end
Routen:
get 'logout' => 'sessions#destroy'
post 'logout' => 'sessions#destroy'
delete 'logout' => 'sessions#destroy'
get 'login' => 'sessions#new'
post 'login' => 'sessions#create'
resources :users, :user_types
Auch ich will nicht ‚Anmeldungen‘ Ansicht erstellen - es sollte keine Möglichkeit, Benutzer über die Website an Ihrer Form
Probieren Sie 'form_for (: Sitzung, URL: login_path,: method =>" post ") do | f |'. Können Sie die vollständige Fehlermeldung einschließlich der Zeilennummer und der Zeile, in der der Fehler auftritt, posten? – Kumar