rails形成帮助器空验证

时间:2013-08-14 05:50:40

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

您好我是rails的新手,并且有以下导轨形式,效果很好。

<%= form_for :user, url: users_path do |f| %>
<p>
<%= f.text_field :email, :placeholder=>'first name' %>
<%= f.text_field :email, :placeholder=>'last name' %>
<%= f.email_field :email, :placeholder=>'email address' %>
<%= f.password_field :password, :placeholder=>'password' %>
<%= f.password_field :password2, :placeholder=>'password2' %>
</p>
<%= f.submit 'Sign up!', :class=>'btn-custom btn-submit' %>
<% end %>

在电子邮件文本框中,内置了一些客户端验证,如果它检测到的字符串不是电子邮件地址的格式,则不会提交表单并突出显示该字段。

由于某种原因,内置表单验证不会检查文本字段是否为空。是否有轨道方式来检查它?

我明白我可以用jquery做到这一点,并且如果没有别的办法就会这样做,但是有两种不同形式的验证码似乎很愚蠢。

fyi我也对我的模型进行了验证。

2 个答案:

答案 0 :(得分:6)

使用它:

<%= f.email_field :email, :required => true, :pattern => '[^@]+@[^@]+\.[a-zA-Z]{2,6}',  :placeholder=>'email address' %>

此外:

你有这些:

<%= f.text_field :email, :placeholder=>'first name' %>
<%= f.text_field :email, :placeholder=>'last name' %>

我想它应该是

<%= f.text_field :first_name, :placeholder=>'first name' %>
<%= f.text_field :last_name, :placeholder=>'last name' %>

答案 1 :(得分:2)

为什么这里的每一行都有:email

<%= f.text_field  :email, :placeholder=>'first name' %>
                  ^^^^^^ Here
<%= f.text_field  :email, :placeholder=>'last name' %>
                  ^^^^^^^ and here 
<%= f.email_field :email, :placeholder=>'email address' %>

不应该将它们称为:firstname:lastname吗? (或者模型中调用的任何属性。)

我不确定你在说什么样的验证。如果您的意思是客户端验证,即如果有空白字段则阻止表单完全提交,这必须通过Javascript完成。 Rails是服务器端代码,因此在表单数据已经提交之前无法对表单数据执行任何操作。

要验证字段服务器端,您只需在模型中添加以下内容:

validates :email,     presence: true
validates :firstname, presence: true
validates :lastname,  presence: true

...你说你已经完成了,但是我将这个包括在内,以供将来可能正在阅读这个问题的人充分参考。