Rails入門8 エラーメッセージ編 ~Twitterもどきが出来るまで~

前回まで

今回やりたいこと

BULMAでデザインを当てたページに対しエラー表示

完成系

スクリーンショット 2020-02-29 18.03.46

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

次の記事