2011-10-02 65 views
2

我使用Rails輔助方法來構建表單並使用驗證。Rails 3.1 - 帶有錯誤的字段

只要其中一個驗證失敗,rails會在field_with_errors標記中包裝相應的輸入和標籤。這很好。

然而,由於種種原因Rails是包裹在輸入和在不同的div標籤,使得造型真的很辛苦:

如:

<div class="field"> 
    <div class="field_with_errors">...label...</div> 
    <div class="field_with_errors">..input ...</div> 
</div> 

和我需要的是:

<div class="field"> 
    <div class="field_with_errors">...label & input...</div> 
</div> 

有誰知道我會怎樣做到這一點?

回答

8

一種方法是用跨度替換div,因爲它們不是塊級元素,所以不會破壞格式。要做到這一點,把這個地方在初始化:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance| 
    "<span class=\"field_with_errors\">#{html_tag}</span>".html_safe 
end 

另一種方法是簡單地使原有的div不顯示爲塊級元素,這條線在你的CSS文件:

.field_with_errors { display: inline-block; } 

但這並不完全支持some of the older browsers(看着你的IE6和7)。

+0

謝謝。這與逃避雙引號的作品。這個http://railscasts.com/episodes/39-customize-field-error不再工作了...... – zigomir