Здравствуйте, делаю регистрацию на сайте по уроку. Вход на сайт работает, а вот выход нет. Подскажите пожалуйста что исправить. Пункты меню не меняются, и пишется, что пользователь ещё на сайте.
Application.html.erb
<ul class="nav navbar-nav navbar-right">
<% if current_user %>
<li>Signed in as: <%= current_user.name %></li>
<li><%= link_to "Sign out", 'sign_out', method: :delete %></li>
<% else %>
<li><%= link_to "auth/facebook" do %>Facebook<% end %></li>
<li><%= link_to "auth/vkontakte" do %>VK<% end %>
<% end %>
</ul>
home_controller.rb
before_action :set_auth
def index
end
def profile
end
private
def set_auth
@auth = session[:omniauth] if session[:omniauth]
end
Application_controller.rb
protect_from_forgery with: :exception
private
def current_user
@current_user ||= User.find_by(uid: session[:user_id]) if session[:user_id]
end
helper_method :current_user
User.rb(модель)
def self.sign_in_from_omniauth(auth)
find_by(provider: auth['provider'], uid: auth['uid']) || create_user_from_omniauth(auth)
end
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["info"]["name"]
end
end
Session_controller.rb
def create
auth = request.env["omniauth.auth"]
session[:omniauth] = auth.except('extra')
user = User.sign_in_from_omniauth(auth)
session[:uid] = user.uid
redirect_to root_url, notice: "SIGNED IN"
end
def destroy
session[:uid] = nil
session[:omniauth] = nil
redirect_to root_url, notice: "SIGNED OUT"
end
route.rb
Rails.application.routes.draw do
root to: "home#index"
get "/auth/:provider/callback" => "sessions#create"
# get "/sign_out" => "sessions#destroy", :as => :sign_out
delete 'sign_out', to: 'sessions#destroy'
end