【Ruby on Rails】 에러 메시지의 개별 표시
목표
개발 환경
루비 2.5.7
Rails 5.2.4.3
OS: macOS Catalina
전제
※◯◯◯를 선택하면 설명 등이 나오므로,
잘 모르는 경우의 참고로 해 주시면 좋겠습니다.
루비 2.5.7
Rails 5.2.4.3
OS: macOS Catalina
전제
※◯◯◯를 선택하면 설명 등이 나오므로,
잘 모르는 경우의 참고로 해 주시면 좋겠습니다.
※기술이 적으면, 유효한 수단이라고 생각합니다만,
많아지면 설명이 상당히 늘어나 버리므로,
참고까지 봐 주셨으면 합니다.
view 편집
초기 상태라면 아래와 같이 기재되어 있습니다.
app/views/users/registrations/new.html.erb<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "users/shared/error_messages", resource: resource %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "users/shared/links" %>
위에 편집을 추가합니다.
app/views/users/registrations/new.html.erb<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<% if @user.errors.any? %>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
<% if @user.errors.include?(:name) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:name).first %>
<% end %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
<% if @user.errors.include?(:email) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:email).first %>
<% end %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
<% if @user.errors.include?(:password) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:password).first %>
<% end %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
<% if @user.errors.include?(:password_confirmation) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:password_confirmation).first %>
<% end %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "users/shared/links" %>
보충
①下記記述を削除し、if文を追加。@userのエラーを確認します。
<%= form_for〜%>
<%= render "users/shared/error_messages", resource: resource %>
↓
<%= form_for〜%>
<% if @user.errors.any? %>
<% end %>
②各field下に下記のカラム名を編集後追加。
<% if @user.errors.include?(:name) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:name).first %>
<% end %>
유효성 검사를 추가하고 오류를 더 많이 확인하려면,
다음과 같이 추가하면 괜찮습니다.
밸리데이션의 종류는 많이 있으므로 조사해 보세요.
덧붙여서 아래의 밸리데이션은 공백이 아닌 것을 확인하고 있습니다.
app/models/user.rbvalidates :name, presence: true
Reference
이 문제에 관하여(【Ruby on Rails】 에러 메시지의 개별 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/japwork/items/fcf2049fb4991de987a2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "users/shared/error_messages", resource: resource %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "users/shared/links" %>
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<% if @user.errors.any? %>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
<% if @user.errors.include?(:name) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:name).first %>
<% end %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
<% if @user.errors.include?(:email) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:email).first %>
<% end %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
<% if @user.errors.include?(:password) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:password).first %>
<% end %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
<% if @user.errors.include?(:password_confirmation) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:password_confirmation).first %>
<% end %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "users/shared/links" %>
①下記記述を削除し、if文を追加。@userのエラーを確認します。
<%= form_for〜%>
<%= render "users/shared/error_messages", resource: resource %>
↓
<%= form_for〜%>
<% if @user.errors.any? %>
<% end %>
②各field下に下記のカラム名を編集後追加。
<% if @user.errors.include?(:name) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:name).first %>
<% end %>
유효성 검사를 추가하고 오류를 더 많이 확인하려면,
다음과 같이 추가하면 괜찮습니다.
밸리데이션의 종류는 많이 있으므로 조사해 보세요.
덧붙여서 아래의 밸리데이션은 공백이 아닌 것을 확인하고 있습니다.
app/models/user.rb
validates :name, presence: true
Reference
이 문제에 관하여(【Ruby on Rails】 에러 메시지의 개별 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/japwork/items/fcf2049fb4991de987a2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)