开发者

Rails 3 custom validation: Highlighting offending fields

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

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜