1

我有一个User.create临时注册新用户并使用生成的密码发送电子邮件的操作。完成该动作的最类似于 Rails 的方式是什么?从现在开始,我想把所有事情都做好。废话不多说。这次我是认真的。

我在想这些是选项...

  1. 创建一个名为login_email_sent.html.haml并渲染它的视图。(它会有一条消息,例如“谢谢,您的登录信息已发送一封电子邮件。”)

  2. 创建一个名为的视图create.html.haml并让 Rails 默认渲染它。

  3. 将用户重定向到与他们刚刚提交的表单相同的页面,并在 Flash 中显示消息。

或者是其他东西...?

4

4 回答 4

6

这更像是一个用户体验问题。

将 create 操作保留为仅创建且没有输出的内容(或者,201 Created如果由 API 调用创建,则只是一个简单的标头)。执行以下redirect_to任一操作:

  1. 感谢页面告诉他们如何等待以及接下来会发生什么
  2. 主页上有一条非常明显的 Flash 消息,让他们知道刚刚发生了什么。

在 99.9% 的情况下,您永远不需要创建模板。

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

例如。

于 2009-02-10T00:25:28.880 回答
4

绝对是选项 3,重定向到 show 动作。当您这样做时,用户将在操作完成时被重定向,因此不会意外地通过返回历史记录重新发布。此外,这确保了渲染的页面可以添加书签/保存。

于 2009-02-10T00:20:58.657 回答
1

将他们重定向到登录页面,并通过一条消息告诉他们检查他们的电子邮件以获取有关验证和登录其帐户的进一步说明。许多人建议在用户验证时自动登录用户,但在我看来,这对于任何敏感站点来说都是一个安全问题。

于 2009-02-10T02:31:39.593 回答
1

这取决于他们是否可以在您的网站上进行有用的操作而无需注册。如果有然后将他们重定向到主页并使用闪光灯显示一条消息,说明已发送电子邮件并邀请他们在此期间环顾四周。

如果他们无能为力,那么您可以将他们重定向到带有信息/常见问题解答的欢迎页面,以帮助他们抢占先机,让他们觉得他们已经注册了一些有价值的东西。

另外,不要在电子邮件中向他们发送密码,而是考虑向他们发送指向用户帐户设置页面的链接,他们可以在其中设置密码和其他详细信息。该链接将包含与新用户帐户关联的后门访问代码。提交并验证此页面后,可以删除后门代码。

同样的方法可以用于忘记密码,一旦用户设置了新密码,或者如果他们记住了密码并正常登录,后门密码就会被删除。

这种方法的唯一问题是它们最终可能会在您的网站上打开两个浏览器窗口或选项卡。但它确实让您有机会询问您可能需要的任何其他信息——地址、出生日期或其他任何信息——而不会因为在初始注册表单上提出太多问题而吓跑人们。

于 2009-02-10T10:47:28.193 回答