您好我是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我也对我的模型进行了验证。
答案 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
...你说你已经完成了,但是我将这个包括在内,以供将来可能正在阅读这个问题的人充分参考。