Как правильно завершить действие создания Rails? - PullRequest
1 голос
/ 10 февраля 2009

У меня есть действие User.create, которое временно регистрирует нового пользователя и отправляет электронное письмо с сгенерированным паролем. Какой самый Rails-подобный способ выполнить это действие? Я хочу сделать все точно прямо сейчас. Нет больше глупостей. На этот раз я серьезно.

Я думаю, что это варианты ...

  1. Создайте представление с именем login_email_sent.html.haml и отобразите его. (Было бы сообщение типа «спасибо, письмо было отправлено с вашим логином».)

  2. Создайте представление с именем create.html.haml и позвольте Rails отображать его по умолчанию.

  3. Перенаправить пользователя на ту же страницу, что и форма, которую он только что отправил с сообщением во флэш-памяти.

Или что-то еще ...?

Ответы [ 4 ]

6 голосов
/ 10 февраля 2009

Это больше вопрос опыта пользователя.

Оставьте действие создания как нечто, что просто создает и не имеет вывода (или просто простой заголовок 201 Created, если он создан вызовом API) Сделайте redirect_to либо:

  1. Страница с благодарностями, рассказывающая, как ждать и что будет дальше
  2. Домашняя страница с очень заметным флэш-сообщением, информирующим их о том, что только что произошло.

В 99,9% случаев вам не нужен шаблон для создания.

def create
  User.create(...)
  respond_to do |format|
    format.html { redirect_to signup_complete_url }
    format.xml  { render :head => :created }
  end
end

Например.

4 голосов
/ 10 февраля 2009

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

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

Зависит от того, смогут ли они что-нибудь полезное сделать на вашем сайте без регистрации. Если есть, то перенаправьте их на домашнюю страницу и используйте флэш-память, чтобы отобразить сообщение, объясняющее, что электронное письмо было отправлено, и приглашающее их осмотреться тем временем.

Если они ничего не могут сделать, вы можете перенаправить их на приветственную страницу с информацией / часто задаваемыми вопросами, чтобы помочь им начать работу и почувствовать, что они подписались на что-то стоящее.

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

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

Единственная проблема этого подхода заключается в том, что на вашем сайте могут появиться два окна или вкладки браузера. Но это дает вам возможность запросить любую другую информацию, которая может вам понадобиться - адрес, DOB или что-либо еще - не отпугивая людей, добавив слишком много вопросов в вашу первоначальную регистрационную форму.

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

Перенаправьте их на страницу входа в систему, сообщив им о необходимости проверить свою электронную почту и получить дополнительные инструкции по проверке и входу в свою учетную запись. Многие люди предлагают войти в систему автоматически при проверке пользователя, но, на мой взгляд, это проблема безопасности для любых конфиденциальных сайтов.

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