Как перенаправить на экран входа в систему ТОГДА выполнить действие ресурса в Ruby on Rails? - PullRequest
2 голосов
/ 18 ноября 2010

В моем приложении rails 2 у меня есть страница с фотографиями.На этой странице показа фотографий есть текстовое поле, в котором посетители могут оставлять комментарии к фотографии.

Если пользователь, который не вошел в систему, вводит комментарий и нажимает кнопку отправки, я хочу использовать оверлей входа / регистрации (илимодально) появляться.Как только они войдут в систему или зарегистрируются (через нашу собственную авторизацию или FB-соединение), я хочу, чтобы модал исчез и комментарий был отправлен.

У меня вопрос, как мне справиться с этим, сохраняя код DRY, CRUDи привержен MVC?

Некоторые варианты, которые я рассмотрел:

  1. Передача текста комментария в виде скрытого поля в форме входа / регистрации.Сохраните комментарий в сеансе / новое действие.Это не CRUD, и также не работает, если кто-то входит в систему через Facebook.
  2. Сохраните текст комментария как переменную сеанса, затем после входа в систему, когда страница перезагрузится, определите переменную сеанса в фотографии /показать действие и сохранить комментарий.Это не CRUD.
  3. Сделайте то же самое, что и выше, но определите переменную сеанса в представлении и сохраните комментарий.Это нарушает MVC.
  4. Полностью обработайте вход / регистрацию через AJAX, определите успешный ответ, а затем сделайте вызов, чтобы сохранить комментарий.Это нарушает MVC.

Имейте в виду, что такое поведение, при котором пользователь запрашивает вход в систему после отправки комментария, будет происходить по всему сайту на многих различных типах ресурсов (не только на фотографиях), поэтомуСУХОЕ решение важно, если это вообще возможно.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

Я не понимаю, как # 4 "ломает" MVC.MVC только говорит о вещах на стороне сервера.Если запрос поступает из браузера, получающего URL-адрес или из сценария, выполняющего XHR, он все равно остается «mvc» во всех тех же отношениях;запрос поступает в контроллер, контроллер получает нужные модели, передает их в представление и отправляет обратно результат.

0 голосов
/ 02 декабря 2010

Разве рабочий процесс не был бы лучше, если бы вы не отображали форму комментариев пользователям, которые не могли комментировать (потому что они не вошли в систему).Тогда вы можете хотя бы отобразить текст со ссылкой, которая откроет модальное имя входа и позволит пользователю войти в систему.Как только они вошли в систему, вы можете перенаправить их обратно на фотографию, которую они просматривали вместе с отображаемой теперь формой комментария.

Я с re5et, рабочий процесс кажется некорректным.

...