【Rails】 에러 메시지 표시

7028 단어 초보자루비Rails

목표


  • 오류 메시지 표시
  • 사용자 등록과 게시물이 왜 실패했는지 알려주는 메시지

  • 구현



    오류 메시지 파일 작성

    app/views/layouts/_error_messeages.html.erb
    <% if model.errors.any? %>
      <div id="error_explanation" class="alert alert-warning">
        <ul class="mb-0">
          <% model.errors.full_messages.each do |message| %>
            <li><%= message %></li>
          <% end %>
        </ul>
      </div>
    <% end %>
    

    밸리데이션



    신규 등록시의 제한을 기술.
    여기에 기술 된 한계에 걸린 경우 오류 메시지로 표시됩니다.

    app/models/user.rb
    class User < ApplicationRecord
      before_save { email.downcase! }
      validates :name, presence: true, length: { maximum: 50 }
      validates :email, presence: true, length: { maximum: 255 },
                        format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i },
                        uniqueness: { case_sensitive: false }
      has_secure_password
    

    신규 등록 양식에 부분 render 에 에러 메세지 파일을 기술한다.<%= render 'layouts/error_messages', model: f.object %>
    app/views/users/new.html.erb
    
      <h1>Sign up</h1>
    
        <%= form_with(model: @user) do |f| %>
         <%= render 'layouts/error_messages', model: f.object %>
    
          <div>
            <%= f.label :name, 'Name' %>
            <%= f.text_field :name, class: 'form-control' %>
          </div>
    
          <div>
            <%= f.label :email, 'Email' %>
            <%= f.email_field :email, class: 'form-control' %>
          </div>
    
          <div>
            <%= f.label :password, 'Password' %>
            <%= f.password_field :password, class: 'form-control' %>
          </div>
    
          <div>
            <%= f.label :password_confirmation, 'Confirmation' %>
            <%= f.password_field :password_confirmation, class: 'form-control' %>
          </div>
    
          <%= f.submit 'Sign up', class: 'btn btn-primary' %>
        <% end %>
    

    이제 오류 메시지가 표시됩니다.다른 양식도 비슷한 방식으로 괜찮습니다.

    좋은 웹페이지 즐겨찾기