2015-04-27 4 views
0

У меня очень большая модель Project, и я использую множество вкладок, чтобы показать разные части формы.Ошибки группы Rails

Идея: каждая вкладка группирует определенное подмножество полей для моей модели, и если есть ошибка, я хотел бы выделить заголовок вкладки красным цветом.

Это очень просто для вложенных ассоциаций, потому что я просто должен проверить object.errors[:association].any?

Но для всех других областях, это было бы очень утомительно делать

object.errors[:name] or object.errors[:start_date] or object.error[:end_date]... 

Есть ли способ сгруппировать некоторые ошибки вместе? Ниже следует вернуть истину, если есть ошибки в любом :name, :start_date ...

object.errors[:basic_params].any? 

В моем HTML выглядит как этот

<ul class="nav nav-tabs" role="tablist"> 
    <li><a href="#tab-summary" data-toggle="tab">Résumé</a></li> 
    <li><a href="#tab-echanges" data-toggle="tab" 
     <%= 'class="text-danger"'.html_safe if @etude.errors[:echanges].any? %>>Echanges</a> 
    </li> 
    <li><a href="#tab-params" data-toggle="tab" 
     <%= 'class="text-danger"'.html_safe if @etude.errors[:basic_params].any? %>>Paramètres</a> 
    </li> 
    <li><a href="#tab-phases" data-toggle="tab" 
     <%= 'class="text-danger"'.html_safe if @etude.errors[:phases].any? %>> Phases</a> 
    </li> 
    <li><a href="#tab-candidatures" data-toggle="tab" 
     <%= 'class="text-danger"'.html_safe if @etude.errors[:competences].any? %>> Candidatures</a> 
    </li> 

я знаю, в то же время я могу сделать что-то вроде этого, но мне очень хотелось бы иметь систему группировки ошибок.

[:name, :start_date, :end_date].each do |field| 
    return true if object.errors.include?(field) 
end 
+1

Вы имеете в виду этот драгоценный камень: https://github.com/adzap/grouped_validations? – BroiSatse

+0

F ***. Да, конечно. Драгоценный камень довольно старый, но я считаю, что он все еще работает с Rails 4? Если да, то вы можете добавить правильный ответ, который я буду отмечать как принятое решение. –

+0

Ouch. В соответствии с проблемами, он несовместим с rails 4.1+ –

ответ

1

Я не могу соответствовать нужным :[] синтаксиса подстановки точно, но если это все, что вы хотите сделать, почему бы не просто использовать структуру, как следующий?

example_params = [:name, :start_date, :end_date] 
errors.any? { |e| example_params.include? e } 
Смежные вопросы