У меня есть строка в контроллере голосов:
before_filter :authenticate
Поэтому, когда я голосую, когда вышел из системы, этот фильтр должен выйти из строя.
Мой метод аутентификации в контроллере приложения выглядит следующим образом:
def authenticate
logged_in? ? true : access_denied
end
Так что возвращается access_denied
, который выглядит так:
def access_denied
redirect_to login_path, :notice => "You must log in to perform this action." and return false
end
Поэтому я должен быть перенаправлен на мою страницу входа, верно?
У меня есть это в моем файле rout.rb:
match '/login' => "sessions#new", :as => "login"
и у меня есть представление new
с формой входа в систему, на которое я должен быть перенаправлен, когда я голосую, и я не вошел в систему. У меня также есть этот код в методе create
моего контроллера голосов:
if @vote.save
respond_to do |format|
format.html { redirect_to @video }
format.js
end
else
respond_to do |format|
format.html
end
end
Но когда я голосую, меня не перенаправляют, и я получаю это сообщение об ошибке в своих журналах:
Started GET "/login" for 127.0.0.1 at Thu Mar 24 21:18:08 -0700 2011
Processing by SessionsController#new as JS
Completed in 17ms
ActionView::MissingTemplate (Missing template sessions/new with {:locale=>[:en, :en], :formats=>[:js, "*/*"], :handlers=>[:rhtml, :rxml, :erb, :builder, :rjs]} in view paths "/rubyprograms/dreamstill/app/views"):
Почему это происходит, и как я могу заставить это перенаправление работать?