2015-04-27 37 views
0

我有一個非常大的Project模型,我使用很多選項卡來顯示窗體的不同部分。Rails組錯誤

想法:每個選項卡重新組合我模型的特定字段子集,如果出現錯誤,我想突出顯示紅色標籤的標籤。

這是嵌套協會很簡單,因爲我只需要檢查object.errors[:association].any?

但對於所有其他領域,這將是非常乏味做

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

是否有辦法將一些錯誤分組在一起?如果在任一:name, :start_date錯誤下應該返回true ...

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

哎。根據問題,它不兼容導軌4.1+ –

回答

1

我不能精確匹配所需的:[]查詢語法,但如果這是你想做的事,爲什麼不直接使用的結構類似下面的?

example_params = [:name, :start_date, :end_date] 
errors.any? { |e| example_params.include? e }