simple_form& bootstrap验证无效

时间:2012-04-29 18:25:22

标签: ruby-on-rails twitter-bootstrap omniauth simple-form

我想设置一个“创建帐户”页面。我正在使用的宝石是:

  • rails(3.2.3)
  • simple_form(2.0.1)
  • omniauth同一性
  • twitter-bootstrap-rails(2.0.6)
  • mongoid(2.2.3)

表格如下:

= simple_form_for @identity, :url => '/auth/identity/register', :html => { :class =>    'form-horizontal' } do |f| 
  = f.input :name, :input_html => {:name => 'name'}
  = f.input :email, :input_html => {:name => 'email'}
  = f.input :password, :as => 'password', :input_html => {:name => 'password'} 
  = f.input :password_confirmation, :label => "Confirm Password", :as => 'password', :input_html => {:name => 'password_confirmation'} 
  .form-actions
    = f.button :submit, 'Sign Up', class: 'btn-primary'
    = link_to 'Cancel', root_path,  class: 'btn-danger'

相应的身份模型是

class Identity
  include Mongoid::Document
  include OmniAuth::Identity::Models::Mongoid
  field :name, :type => String
  field :email, :type => String
  field :password_digest, :type => String

  validates_presence_of :name, :email
  validates_uniqueness_of :email
  validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
end

如果我没有填写表单的任何文本字段,然后单击“注册”,表单不会显示验证器的任何错误消息,而是重定向到主页!

我错过了一些明显的东西,或者这可能是我正在使用的宝石版本的一些问题?我当然可以使用twitter-bootstrap标记在没有simple_form的情况下实现相同的表单,但是更喜欢这种方式。

2 个答案:

答案 0 :(得分:1)

我遇到类似的情况,其中simple_form确实在另一个模型中验证字段,但在用户模型中没有。

无论如何,我注意到你没有:

validates_presence_of :password

在你的模型中。也许mongoid会让你免于这一步?我不知道mongoid,但对我而言,这是证明该字段不是空白的魔力。对于适合我的领域,我有这个:

validates_presence_of :title, :localeLanguage, :message => "can't be blank"

答案 1 :(得分:1)

我有这个问题,我通过在所有简单的表单中包含它来修复它,然后我发现它正确呈现:

<%= f.error_notification %>