Rails 3.1で検証エラーに失敗したフィールドのフォームフィールドの強調表示をどのように表示しますか?スキャフォールディングはこれを処理するためにcssとコントローラーコードを自動的に生成することを知っていますが、それを手動で生成する方法があるかどうか疑問に思いました。@ user.errors.full_messages.each ... etcを介してエラーメッセージの文字列表示をすでに実装しましたが、フィールドを赤で強調表示することができません。何か案は?
ありがとう。
Rails 3.1で検証エラーに失敗したフィールドのフォームフィールドの強調表示をどのように表示しますか?スキャフォールディングはこれを処理するためにcssとコントローラーコードを自動的に生成することを知っていますが、それを手動で生成する方法があるかどうか疑問に思いました。@ user.errors.full_messages.each ... etcを介してエラーメッセージの文字列表示をすでに実装しましたが、フィールドを赤で強調表示することができません。何か案は?
ありがとう。
CSSファイルのフィールドにエラークラスがあると仮定します。
<% if @user.errors[:name] %>
<%= f.label :name, :class => "error" %>
<% else %>
<%= f.label :name %>
<% end %>
これは、あなたの望むことですか?
追加:デフォルトのActiveRecord検証CSSのカスタマイズに関するセクションがあります。
編集:( 追加のifについて)
# 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) %>
[...]
(私はそこで間違いを犯したかもしれません-私は電話で書いています-しかしあなたは一般的な考えを理解します。これは多くの方法でコーディングできます=無限大なのであなたが好きなようにそれをしてください...)
レールは今やその袖に素晴らしいトリックを持っています..error
発生したとき、レールはエラーフィールドの周りにdiv
クラスを配置します。.field_with_errors
これで、そのクラスをターゲットにしてスタイルを追加できます。
入力に集中するには、次のことができます
.field_with_errors input{
border: 1px solid red !important;
}
このcssは、既存のスタイルを上書きinput
しながら、要素の周りに素敵な赤い線を配置します。important!
私はそれを機能させるためにこれをしなければなりませんでした(resource.errors [field_name] .length> 0):
def field_class(resource、field_name)if resource.errors [field_name] .length> 0 return "custom_error1" .html_safe else return "" .html_safe end end