Rails: проблема перенаправления защиты страницы с link_to_unless_current - PullRequest
0 голосов
/ 10 октября 2008

При использовании before_filter :login_required для защиты конкретной страницы метод link_to_unless_current в шаблоне макета приложения отображает ссылку «Вход» для страницы входа в виде гиперссылки вместо простого текста.

Проблема с текстом / ссылкой «Логин» возникает только при перенаправлении на страницу входа через механизм before_filter, в противном случае метод link_to_unless_current работает так, как ожидалось.

Похоже, что link_to_unless_current использует данные старой страницы в качестве "текущей" вместо страницы входа (при перенаправлении).

Ответы [ 2 ]

1 голос
/ 09 февраля 2009

Вы можете использовать метод вспомогательного маршрута для выполнения перенаправления страницы:

 redirect_to login_url

Если определен «именованный маршрут» для входа в систему (это делается путем добавления явного пути к «/ login» в файле «config / rout.rb»).

Этот путь фактически совпадает с путем, генерируемым:

new_session_url

Для более подробного ознакомления с маршрутизацией я предлагаю Руководство по маршрутизации Rails .

0 голосов
/ 13 октября 2008

Цените ответы, и вы можете сказать по характеру вопроса, что мы новички в рельсах. Кстати, мы разместили на этом сайте тот же вопрос: http://railsforum.com (не уверен, что это официальный форум по rails), но ответа пока нет. Похоже, что до сих пор StackOverflow создает большое сообщество помощников, готовых обратиться к программно спорным.

Я думаю, что часть проблемы в том, что мы смешивали релакс-URL со стандартными маршрутами. Страница входа сопоставлена ​​с маршрутом отдыха «/ login», но при перенаправлении страницы использовался «/ session / new» (модуль спокойной аутентификации Рика Олсона)

В application.rb мы принудительно установили фильтр на "/ login", и это решило проблему:

before_filter :login_required

protected

def login_required
  return true if logged_in?
  session[:return_to] = request.request_uri
  flash[:error] = "Please log in first"
  redirect_to "/login" and return false
end

Комментарии по техническим достоинствам этого подхода приветствуются, поскольку он может быть полезен для других новичков.

Спасибо, Джо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...