使用simple_form和html5进行表单验证

时间:2012-06-30 15:23:02

标签: ruby-on-rails ruby html5 validation simple-form

从我们的页面轻松的方式是 welcome-controller添加电子邮件 - > second_controller使用E-Mailadddress创建一个新对象。

我们有一个欢迎控制器,显示我们的欢迎页面。在此页面,您可以键入一个电子邮件地址,该电子邮件地址将提供给另一个控制器。我们使用simple_form 如果我们这个config.browser_validations = false并输入“正常”文本,我们会在创建操作上出错。在旧版本中,如果没有simple_form,我们会收到验证错误。 如果我们启用此功能,我们将获得html5验证。但是当浏览器不支持html5时? 我们的模型在这里

validates :owner_email,   
        :presence => true,
        :format => { :with => /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/ },
        :on => :create

我们的欢迎观点在这里

<p>
<h2>Create a list without registration.</h2>
<%= simple_form_for([@list], :html => {:class => 'well' }) do |f| %>
    <%= f.input :owner_email,  :label => false, :placeholder => 'Your Email.' %>
      <%= f.button :submit, "Create", :class => "btn-primary" %>
<% end %>
</p>

我们来自第二个控制器的创建动作是

def create
# create a new list and fill it up
# with some default values
  @list = List.new(
    :title => "List", 
    :description => "Beschreibung",
    :owner_email => "test@domain.com",
    :admin_key => generate_admin_key)
  @list.update_attributes(params[:list])
  respond_with(@list) do |format| 
    format.html {#
      redirect_to :action => "admin", :id => @list.access_key, :status => 301}
  end 
end

我们有什么改变,我们在html4版本中得到错误消息?大家可以帮助我们吗?

1 个答案:

答案 0 :(得分:3)

只需添加:message参数即可。除非您更改了simple_form配置,否则消息错误应显示在字段的右侧,并显示错误。

validates :owner_email,   
        :presence => true,
        :format => { :with => /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/ ,
                     :message => 'Invalid e-mail! Please provide a valid e-mail address'},
        :on => :create