Так что я использую драгоценный камень Vanity, который обрабатывает все params[:vname]
в моих URL и перенаправляет в нужное место для большинства vnames
.
Но я только что добавил аутентификацию через Omnipopulus - https://github.com/icelab/omnipopulus - и мне нужно перейти на `mydomain.com/login'.
Но когда я это делаю, он отправляет его на мой Vanities
контроллер. Вот журнал этого запроса:
Started GET "/login" for 127.0.0.1 at 2011-09-18 16:39:15 -0500
Processing by VanitiesController#show as HTML
Parameters: {"vname"=>"login"}
Vanity Load (0.1ms) SELECT "vanities".* FROM "vanities" WHERE "vanities"."name" = 'login' LIMIT 1
Rendered public/404.html within layouts/application (0.0ms)
Completed 404 Not Found in 13ms (Views: 11.5ms | ActiveRecord: 0.3ms)
Что делает контроллер Vanities
, когда он получает URL-адрес как mydomain.com/vname
, он проверяет, существует ли запись vname
для значения в параметрах (обычно это имя пользователя). Если он находит его, он перенаправляет на действие show этого пользователя. Но, учитывая, что login
не является ни пользователем, ни именем пользователя, он не должен обрабатывать маршрутизацию для этого ключевого слова.
Как добавить исключение?
Это маршрут для контроллера Vanities
:
controller :vanities do
match ':vname' => :show, :via => :get, :constraints => {:vname => /@?[A-Za-z0-9\-\+]+/}, :as => :vanity
end