2012-03-03 3 views
3

Я рефакторинг моего access_controller в sessions_controller и не могу показать, что мое действие destroy работает нормально.Рельсы 3 Правильная маршрутизация действия уничтожения для сеанса

Вход в систему работает нормально, но я не могу выйти из сеанса. Вот ссылка У меня есть для выхода из:

<%= link_to("Logout", :controller => "sessions", :action => 'destroy') %> 

routes.rb

resources :sessions 

sessions_controller.rb

class SessionsController < ApplicationController 

    def new 
    end 

    def create 
    ... 
    end 

    def destroy 
    session[:user_id] = nil 
    flash[:notice] = "You are now logged out" 
    redirect_to root_url 
    end 
end 

Когда я нажимаю "Выход" Я попадаю на «/ сессий/destroy "с сообщением« Действие «показать» не удалось найти для SessionController ». Кажется, что действия уничтожения хотят идентификатор, но мне не нужно передавать идентификатор, я просто хочу запустить действие.

+0

См http://stackoverflow.com/questions/2405635/how-to- empty-destroy-a-session-in-rails – junky

+0

Это показывает мне, как полностью очистить сеанс (что интересно), но моя проблема - проблема маршрутизации. Я хотел бы иметь возможность использовать маршруты здесь, но используя «ресурсы: сеансы» силы/сеансы/уничтожить, чтобы искать идентификатор. –

ответ

2

Ах, я нашел ответ здесь: http://railscasts.com/episodes/250-authentication-from-scratch

мне нужно настроить свои маршруты следующим образом:

get "log_out" => "sessions#destroy", :as => "log_out" 
get "log_in" => "sessions#new", :as => "log_in" 
resources :sessions 
+0

Это сработало для меня ... просто изменил 'match 'ajax_logout', на: 'sessions # destroy', через: 'get'' TO' get' ajax_logout '=>' sessions # destroy ',: as =>' ajax_logout «И все работает» Спасибо за ответ! – Elmor

Смежные вопросы