使用Ruby、PGSql和Sinatra的new.erb视图和控制器中的年龄布尔值

使用Ruby、PGSql和Sinatra的new.erb视图和控制器中的年龄布尔值,ruby,date,view,boolean,sinatra,Ruby,Date,View,Boolean,Sinatra,我正在与Sinatra合作,我的目标是让我的应用程序的用户在“创建客户”表单中输入他们的客户年龄,并在age>=21时接受他们作为客户@dob是对象customer的实例变量,它是日期 我在控制器上的尝试: post '/customer' do @customer = Customer.new( params ) if @dob.nil? return "No date of Birth" else age = Date.

我正在与Sinatra合作,我的目标是让我的应用程序的用户在“创建客户”表单中输入他们的客户年龄,并在
age>=21时接受他们作为客户
@dob
是对象
customer
的实例变量,它是
日期

我在控制器上的尝试:

post '/customer' do
  @customer = Customer.new( params )
    if @dob.nil?
            return "No date of Birth"
     else 
            age = Date.today.year - @dob.year
                if age >= 21
                       @customer.save
                       erb( :"guests/create" ) 
                else
                       erb( :"guests/not_created" )
                end        
    end
end
new.erb
文件中的表单:

<div class="form-el">
     <label for="dob">DOB:</label>
     <input type="date" name="dob" id="dob"/>
</div>

出生日期:
这里的错误是
#
,但同时也改变了
年份
方法,从而出现其他错误。
非常感谢您的帮助

错误来自哪一行?我不知道你怎么会用你所展示的代码得到这个错误。顺便说一句,这种类型的验证可以重构到客户模型上。你在使用哪种ORM?据我所知,我没有使用任何ORM。我如何在客户机中重构它?那么您自己定义了save方法?Customer从哪个类继承?Customer本身就是一个类,我在模型中定义了所有CRUD操作。我在那里创建了年龄检查,但不知道如何在以后的视图中使用它。如果@dob.nil?返回“无出生日期”是指返回“无出生日期”我在“添加客户”表格中插入的任何日期。。。我如何检查插入日期的使用情况?好的,将来我建议您使用ORM,例如Active Record-使用Sinatra进行设置并不太困难,并且会为您节省大量工作。看见第二,错误真的来自
age=Date.today.year-@dob.year
行吗?如果您已经确定
@dob
为非零,我认为您不可能在这里得到
#
错误。