Rails应用程序中登记页面的年龄检查

时间:2015-03-29 19:43:52

标签: ruby-on-rails ruby ruby-on-rails-4

我为酒类品牌建立了一个营销网站,我需要通过添加目标网页来检查用户的年龄,然后才能进入主网站。在我现有的rails应用程序中处理表单,提交和验证功能的最佳方法是什么?

我应该创建一个原始html表单并使用javascript吗?

2 个答案:

答案 0 :(得分:1)

添加before_actionApplicationController,检查验证是否已经发生(例如,如果它存储在cookie中,然后检查cookie等):

class ApplicationController

  before_action :check_age

  def check_age
   # check if the user has already confirmed their age.
  end

  ...

end

如果没有找到,请将用户重定向到控制器操作,该操作会呈现带有年龄检查表单的页面(即AgeVerificationController#new

提交后,设置cookie(或您正在进行的任何存储此数据的操作),并将用户重定向回他们打算访问的页面(如果他们说他们未成年,则将其踢出网站!)

您需要在用于处理表单呈现和提交的控制器上包含skip_before_action,即

class AgeVerificationController < ApplicationController

  skip_before_action :check_age

...

end`

如果你开始使用它来做很多复杂的事情,使用before_action有时会有点反模式,但在这种情况下,它是一种相当简单的方法来做你想做的事情。

答案 1 :(得分:0)

即使您使用javascript,也需要存储来宾的年龄,以便下次帮助他获得更好的用户体验。所以我建议您将其与ip保存在一起 - 如果您没有存储用于登录的唯一参数(例如电子邮件,手机号码等),则可以识别来宾。 准备好表格后存储此详细信息...您有很多选项,例如: -

  1. 第一个选项就是这样,在提交之前使用jquery验证获取访客的年龄并使用表单将其传递给控制器​​并存储它。使用ajax进行表单提交,以便 您也可以验证其他元素
  2. 第二个选项是让用户访问该页面并在中间显示模式窗口弹出窗口,在页面加载后五秒钟后使用settimeout调用ajax反过来,它将调用一个控制器方法来渲染js文件,该文件将调用一个模态,如$(".myModal").show();或渲染您自己的视图以获取用户详细信息,如:

    $('#myModal').find('.modal-body').html("<%= escape_javascript(render(:partial => 'users/get_details')) %>"); $('#myModal').modal();