Rails入門8 エラーメッセージ編 ~Twitterもどきが出来るまで~
前回まで
今回やりたいこと
BULMAでデザインを当てたページに対しエラー表示
完成系
config/application.rb
エラーがでたときの挙動を変更。ここでやっちゃうとエラー時全部に反映されちゃうから、後々やっぱ嫌だってことが起きそう
config.action_view.field_error_proc = Proc.new do |html_tag, instance|
unless instance.kind_of?(ActionView::Helpers::Tags::Label)
"#{html_tag}<p class=\"help is-danger\">#{instance.error_message.first}</p>".html_safe
end
end
app/views/users/registrations/new.html.erb
emailの部分を抜粋。classを追加するかの判定で #{'is-danger' unless resource.errors.messages[:email].empty?} って書いてるんだけど、長いのが木になる。もっと短く書きたい
<div class="field">
<div class="control has-icons-left">
<%= f.email_field :email, autofocus: true, autocomplete: "email", placeholder: "Email",class: "input #{'is-danger' unless resource.errors.messages[:email].empty?}" %>
<span class="icon is-small is-left">
<i class="fas fa-envelope"></i>
</span>
</div>
</div>
完
余談
helperやdecoratorつかうとか色々考えたんだけど結局シンプルに実装できた。時間かかった割には説明することあまりないw