Witam
W pliku application_controller.rb mam:
[code=ruby]class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
after_filter :store_location, :except => [:create, :update, :destroy]
private
def store_location
logger.info "Zachowywanie położenia - faza 1"
logger.info "Zachowywanie położenia - session[:return_to]: #{session[:return_to]}"
logger.info "Zachowywanie położenia - request.fullpath: #{request.fullpath}"
session[:return_to] = request.fullpath
logger.info "Zachowywanie położenia - faza 2"
logger.info "Zachowywanie położenia - session[:return_to]: #{session[:return_to]}"
logger.info "Zachowywanie położenia - request.fullpath: #{request.fullpath}"
end
end[/code]
W kontrolerze admin/pages_controller.rb mam dla wszystkich akcji ustawiony before_filter, który przekierowuje użytkowników bez uprawnień.
Dlaczego w logach mam:
[code]Started GET “/admin” for 127.0.0.1 at 2010-09-23 18:37:28 +0200
Processing by Admin::PagesController#index as HTML
User Load (0.3ms) SELECT users
.* FROM users
WHERE (users
.id
IS NULL) LIMIT 1
Redirected to http://localhost:3000/
Zachowywanie położenia - faza 1
Zachowywanie położenia - session[:return_to]: /
Zachowywanie położenia - request.env[REQUEST_PATH]: /admin
Zachowywanie położenia - faza 2
Zachowywanie położenia - session[:return_to]: /admin
Zachowywanie położenia - request.env[REQUEST_PATH]: /admin
Completed 302 Found in 148ms
Started GET “/” for 127.0.0.1 at 2010-09-23 18:37:29 +0200
Processing by PagesController#index as HTML
User Load (0.2ms) SELECT users
.* FROM users
WHERE (users
.id
IS NULL) LIMIT 1
Rendered sessions/_login_form.html.erb (17.4ms)
Rendered pages/index.html.erb within layouts/application (104.1ms)
Zachowywanie położenia - faza 1
Zachowywanie położenia - session[:return_to]: /admin
Zachowywanie położenia - request.env[REQUEST_PATH]: /
Zachowywanie położenia - faza 2
Zachowywanie położenia - session[:return_to]: /
Zachowywanie położenia - request.env[REQUEST_PATH]: /
Completed 200 OK in 111ms (Views: 109.9ms | ActiveRecord: 0.2ms)[/code]
Dlaczego przy GET /admin wykonuje się after_filter? Wg dokumentacji nie powinien się wykonać. Nie przeszkadza to w poprawnym działaniu strony, bo before_filter korzysta zawsze z poprawnego session[:return_to], ale odczuwam wewnętrzny dyskomfort patrząc na tego babola. Poza tym testy nie przechodzą. Co muszę zrobić, żeby zmienić to zachowanie filtra?