好吧我創建了一個用戶和登錄表單並添加了會話支持。它正確顯示登錄表單。我登錄後會顯示消息「已登錄!」。在這裏正常工作。RoR - 會話無法正常工作(登錄/退出)
但它仍然顯示我的登錄字段。我也在那裏添加了一個「註銷」鏈接,如果用戶登錄,則顯示註銷。但它給了我登錄成功的消息和登錄表單。
這裏是application.html.erb文件
<header>
<div class="wrapper">
<img src="/gfx/logo.png">
<span>Welcome</span>
<% if current_user %>
<%= link_to "Log Out", logout_path %>
<% else %>
<%= form_tag sessions_path do %>
<%= text_field_tag :username, nil, placeholder: "username" %>
<%= password_field_tag :password, nil, placeholder: "password" %>
<%= submit_tag "Log In" %>
<% end %>
<% end %>
</div>
</header>
的會話控制器:
class SessionsController < ApplicationController
def create
user = User.find_by_username(params[:username])
if user && user.authenticate(params[:password])
session[:userid] = user.id
redirect_to root_url, notice: "Logged in!"
else
flash[:error] = "Wrong Username or Password."
redirect_to root_url
end
end
def destroy
session[:userid] = nil
redirect_to root_url, notice: "Logged out."
end
end
應用控制器:
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
而且用戶控制器(創建)行動:
def create
@user = User.create(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to @user, notice: "Thank you for signing up!"
else
render 'new'
end
end
當您創建的會話使用了'會話[:用戶ID]'當你檢查用戶登錄後使用'session [:user_id]' – Mischa