开发者

Rails 3 custom validation: Highlighting offending fields

开发者 https://www.devze.com 2023-02-21 15:52 出处:网络
I\'m writing my first custom rails validation, and would like to tag the offending class with an html \"error\" class if they return false - I can\'t quite figure out how to do it. Relevant validation

I'm writing my first custom rails validation, and would like to tag the offending class with an html "error" class if they return false - I can't quite figure out how to do it. Relevant validation code below - any help appreciated.

(If it makes a difference, I'm u开发者_JAVA技巧sing jQuery)

  validates_each :shop do |record, attr, value|
    shopvar = record.shops.map{ |s| s.email.downcase.strip }

    if shopvar.count != shopvar.uniq.count
      record.errors.add(attr, 'has the same email address entered more than once')
      #record.errors[attr] << "You have entered this shop in the form twice"
    end
  end


So in your form you'd have something like this for an input field

<%= form.text_field :title %>

Since errors is a hash you could use the "include?" method like so...

errors.include?(:title)

This tells you that there's something wrong with this field. Now all you need to do is style it.

Whack on a ternary operator asi...

<% css_class = errors.include?(:title) ? "highlight_error_class" : "no_problem_class" %>
<%= form.text_field :title, :class => css_class %>

Done.

0

精彩评论

暂无评论...
验证码 换一张
取 消