如何顯示Rails 3.1中未通過驗證錯誤的字段的表單字段突出顯示?我知道腳手架會自動生成css和控制器代碼來處理這個問題,但我想知道是否有一種方法可以手動生成。我已經通過以下方法實現了錯誤消息的字符串顯示:@ user.errors.full_messages.each ...等,但是我無法使字段以紅色突出顯示。有任何想法嗎?如何突出顯示Rails驗證錯誤的字段
謝謝。
如何顯示Rails 3.1中未通過驗證錯誤的字段的表單字段突出顯示?我知道腳手架會自動生成css和控制器代碼來處理這個問題,但我想知道是否有一種方法可以手動生成。我已經通過以下方法實現了錯誤消息的字符串顯示:@ user.errors.full_messages.each ...等,但是我無法使字段以紅色突出顯示。有任何想法嗎?如何突出顯示Rails驗證錯誤的字段
謝謝。
假設你有一個錯誤類領域在你的CSS文件:
<% if @user.errors[:name] %>
<%= f.label :name, :class => "error" %>
<% else %>
<%= f.label :name %>
<% end %>
這是你想要的嗎?
額外:here's a section about customizing default ActiveRecord validations CSS.
編輯:(約額外IFS)
# app/helpers/application_helper.rb
def field_class(resource, field_name)
if resource.errors[field_name]
return "error".html_safe
else
return "".html_safe
end
end
然後:
# in your view
<%= f.label :name, :class => field_class(@user, :name) %>
<%= f.label :password, :class => field_class(@user, :password) %>
[...]
(我可能犯了一個錯誤的那裏 - 我寫了在電話上 - 但你得到了一般想法。你可以通過多種方式進行編碼=無窮大,所以按照你喜歡的方式進行編碼......)
我必須這樣做(resource.errors [field_name] .length> 0)才能使其工作:
DEF field_class(資源,FIELD_NAME) 如果resource.errors [FIELD_NAME]。長度> 0 返回 「custom_error1」 .html_safe 別的 返回 「」 .html_safe 端 端
或者你可以使用'present?'方法:'if resource.errors [field_name] .present?' – rapcal
滑軌現在有一個很好的把戲它的袖子。當一個error
發生軌道把div
與錯誤字段周圍的類.field_with_errors
。所以現在你可以瞄準那個班級並添加樣式。
把重點放在輸入,你可以做
.field_with_errors input{
border: 1px solid red !important;
}
這個CSS會放一個漂亮的紅線input
元左右,而important!
將覆蓋現有的樣式。
太棒了!這很簡單!非常感謝 –
謝謝。這有效,但這意味着我將不得不爲每個表單域做一個if ... – kdhuang
請參閱編輯。我敢打賭,如果你喜歡,你甚至可以直接編寫代碼。或者你甚至可以重寫'label'本身,而不必寫任何額外的字符。 –
謝謝naliwajek! – kdhuang