やりたいこと
-
devise_error_messages!
を bootstrap3 で綺麗に表示したい - 下記の記事を参考に実装したが、昔の記事なので rubocop に怒られた
- http://qiita.com/inodev/items/d61539b86968f1274ef8
- ボタンにする必要はなかったので自分は
<ul>
と<li>
タグで表示してます
rubocopに怒られないように修正
devise_helper.rb
module DeviseHelper
def devise_error_messages!
return '' if resource.errors.empty?
html = []
html << content_tag(:div, class: 'alert alert-danger', role: 'alert') do
content_tag(:ul) do
resource.errors.full_messages.each do |error_message|
concat content_tag(:li, error_message.to_s)
end
end
end
safe_join html
end
def devise_error_messages?
resource.errors.empty? ? false : true
end
end
こんな感じでエラー表示 |
---|
rubocop のエラーとその対処法
- http://www.rubydoc.info/gems/rubocop/0.41.0/RuboCop/Cop/Rails/OutputSafety
-
html_safe
ではなくsafe_join
を使いなさいと言われるので、 html変数を文字列から配列に変更 - htmlを直書き(or ヒアドキュメント)するのではなく
content_tag
を使い、タグを入れ子にしたいのでブロックで処理する - ただし、
<li>
タグはconcat
で対応