Rails: フォームのエラーが出た欄を、Bootstrapを使ってスタイリングする方法
CSS
.field_with_errors { @extend .has-error; }
解説
- Railsはエラーが出たフォームの欄に、自動で
field_with_errors
というクラスを付ける。 - なので、
field_with_errors
にcssを追加してやれば良い。 - bootstrapのcssを適用するために、sassの
@extend
を使う。 @extend
には、適用したいスタイルを持つbootstrapのクラスを指定する。ここでの場合、bootstrapの.has-error
を適用している。- これでエラー時のCSSにbootstrapのCSSを適用することができた。
HTML 比較
エラーなし
<div class="form-group"> <label class="control-label" for="user_name">Name</label> <input class="form-control" id="user_name" name="user[name]" type="text"> </div>
エラーあり
<div class="form-group"> <div class="field_with_errors"> <label class="control-label" for="user_name">Name</label> </div> <div class="field_with_errors"> <input class="form-control" id="user_name" name="user[name]" value="" type="text"> </div> </div>
おまけ
Railsでbootstrapをつかうには、Gemfileに
gem 'bootstrap-sass'
と指定して、コンソールで
$ bundle
さらに、cssファイルに以下を追加
@import "bootstrap";
リンク
参照