Интеллектуальное перенаправление в зависимости от того, где: символ возврата указывает на - PullRequest
0 голосов
/ 22 октября 2011

У меня есть приложение, которое позволяет администратору переключаться в контекст другого пользователя.Если администратор находится в /images и переключается в контекст другого пользователя, администратор увидит Images, принадлежащую этому пользователю.У меня есть ContextController, который переключает контекст, а затем, в случае успеха, перенаправляет пользователя на :back.

Это замечательно и хорошо работает.Проблема заключается в том, что, если администратор просматривает /images/1 и переключается в контекст другого пользователя, будет выдано сообщение об ошибке (поскольку Image с id=1 не принадлежит этому пользователю).Я мог бы обработать это, чтобы перехватить ошибку и перенаправить пользователя на root_path.Я хотел бы более разумный способ справиться с этим, однако, если у кого-то есть какие-либо идеи.Есть ли хороший программный способ проверить, куда указывает :back, и извлечь :action из этого пути?

Спасибо, Макс

1 Ответ

0 голосов
/ 22 октября 2011

:back просто использует заголовок http referer, который вы можете посмотреть в request.referer Это будет полный URL-адрес, поэтому это будет не так просто, как проверка действия, вам нужно будет сопоставить его сURL полной строкиОбязательно разберитесь со случаем, когда request.referer равно нулю или пусто.

...