Ruby on Rails 在特定字段中存在错误

gio*_*vaZ 4 ruby ruby-on-rails twitter-bootstrap

我正在定义一个名为“联系人”的表中存在的一些字段的验证:

class Contact < ActiveRecord::Base
    validates :nome, :cognome, :indirizzo_abitazione, 
              :numero_civico, :indirizzo_email, :prefisso_cellulare, :cellulare, presence: true
    validates :nome, :cognome, :indirizzo_email, 
              :prefisso_cellulare, :cellulare, uniqueness: true
    validates :indirizzo_email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, on: :create }
end
Run Code Online (Sandbox Code Playgroud)

如果存在错误,我想利用引导程序的类属性“has-error”以红色突出显示特定字段;所以我试图以这种方式做到这一点:

  <div class="form-group <%= @contact.errors[:name] ? "has-error" : "" %>" >
    <%= f.label :name , :class => "control-label" %><br>
    <%= f.text_field :name, :class => "form-control" %>
  </div>
Run Code Online (Sandbox Code Playgroud)

但是当我登录到这个页面时,该字段已经是红色的。有没有一种方法可以查看在验证一条记录期间,特定字段是否出现错误?

Tuc*_*ker 5

@contact.errors[:name]返回一个消息数组,如果里面没有消息,@contact.errors[:name]则只返回一个空数组。数组是一个对象,因此您的语句将始终 yield "has-error"

这将起作用:

<%= @contact.errors[:name].present? ? "has-error" : "" %>
Run Code Online (Sandbox Code Playgroud)