2012-06-03 60 views
0

我有一個很多字段的大表單,我們在rails中找回錯誤的方式是它們駐留在模型對象中。我想要一個乾淨的方式來顯示除了每個字段之外的錯誤,而不是單獨顯示。有沒有可以做到這一點的寶石,如果現在可以做到這一點,最好的辦法是什麼。Rails form inline erorrs

我想每個錯誤顯示除了字段錯誤。

感謝

+1

獲取每個字段('@ object.errors [field_name]')的錯誤並在窗體中迭代它們。我認爲一些形式的寶石可以做到這一點,但我不確定哪一個。 –

回答

3

嘗試simple_formformtastic使它更容易些。有了這些,它會自動做你想要的。

如果你想使你的觀點很長,或者只是不希望使用的寶石,你也可以這樣做:

<span class="help-inline"><%= @object.errors[:field] %></span>

但是,這會得到快速噁心。

+1

它根本沒有問題,但是你應該遍歷它們(或者使用助手),因爲它是一個每個字段的集合。 –

4

假設您使用的是Rails 3+和Rails Form Helpers,您不需要任何寶石,也不需要遍歷錯誤集合。

那麼,這並不完全正確,但Rails會爲你做。你只需要提供一個proc。

我以下內容添加到... /配置/ application.rb中:

# wrap each form field that has an error with the following. 
# note, condition for arrays and singletons. 
config.action_view.field_error_proc = Proc.new do |html_tag, instance| 
    if instance.error_message.kind_of?(Array) 
    %(<span class="validation-error">#{html_tag}</span>).html_safe 
    else 
    %(#{html_tag}<span class="validation-error">&nbsp;</span>).html_safe 
    end 
end 

確保定義的CSS類驗證錯誤。這應該讓它工作,然後你可以調整它以適應你的需求。請注意,您的CSS可以是特定於每種字段類型的,例如input,textarea,select等。

並且當然重新啓動Rails應用程序。

我在SO的另一個線程中實際瞭解了這一點,但現在找不到它,因此無法提供參考。

+1

這正是我正在尋找的東西,但有沒有辦法將它作爲類或其他東西拉出到lib文件夾中。 application.rb中的代碼實際上並不符合維護的最佳利益 – timanema