2010-07-13 67 views
0

我试图建立一个注册页面,分两步。Ruby on Rails注册数据?

第一步显示一个名称,电子邮件,通票。

第二步将显示ReCaptcha。

问题是如何存储表单数据并显示带有验证码的新表单?

我在想会议,但我知道你不应该在会议中存储敏感信息。

我想使用Ajax渲染ReCaptcha如果名称,电子邮件,通过..验证。

有什么建议吗?谢谢。

回答

1

如果您需要一些简单的东西,您可以使用hidden fields保留第二步中的参数。

如果您需要更复杂的事情(多个步骤,回到上一步,部分验证等),您可以使用向导插件。这里是Ruby Toolbox的一列wizard plugins

4

我的建议是,我认为这种情况的两种形式是不必要的复杂,除非有一些特定的应用程序需要解耦用户名/密码捕获和CAPTCHA检查。

您可能很担心使用会话来存储中间数据,但如果您确实想要这样做,那么可以通过一个很棒的屏幕录像显示类似应用程序here的技术。

我个人会去Javascript路线。同时加载两个表单,步骤1可见,步骤2隐藏。通过AJAX调用验证步骤1(如果您需要)或客户端(如果您不需要)。如果步骤1有效,则取消隐藏步骤2表单(如果需要,也可以隐藏步骤1表单)。

更新:标记为隐藏使用CSS,然后使用一些JavaScript在提问的要求添加进一步信息

有很多的方法来隐藏和显示页面内容,但常用的方法是将其包装在一个<div>块(例如JQuery)将其隐藏或取消隐藏。像这样:

<div id="step2" style="display:none"> 
    <% form_for .... %> 

    <% end %> 
</div> 

当页面首次被加载时,表单将被隐藏。然后在JQuery中(例如)做:

$(function() { 
    $('#step2').show(); 
}); 

要取消隐藏它。有关更多用法示例,请参阅showhidetoggle的文档。

+0

如何将表单更改为隐藏? – Brian 2010-07-13 19:59:52

1

有很多方法可以做到这一点。

railscast #217,演示了一种处理多步表单的通用方法,能够处理棘手的事情,如前进和后退多次。看一看。