다른 방법은 다음과 같습니다.
이 템플릿을 사용하는 경우 :
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
다음과 같이 사용자 정의 메시지를 작성할 수 있습니다.
class Thing < ActiveRecord::Base
validate :custom_validation_method_with_message
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:_, "My custom message")
end
end
이렇게하면 밑줄 때문에 전체 메시지가 "내 사용자 지정 메시지"가되지만 처음에 추가 공간은 눈에 띄지 않습니다. 처음에 여분의 공간을 원하지 않으면 .lstrip
메소드를 추가하십시오 .
<% if @thing.errors.any? %>
<ul>
<% @thing.errors.full_messages.each do |message| %>
<li><%= message.lstrip %></li>
<% end %>
</ul>
<% end %>
String.lstrip 메서드는 ': _'에 의해 생성 된 추가 공간을 제거하고 다른 오류 메시지는 변경하지 않습니다.
또는 맞춤 메시지의 첫 단어를 키로 사용하는 것이 더 좋습니다.
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:my, "custom message")
end
end
이제 전체 메시지는 추가 공간없이 "내 사용자 정의 메시지"가됩니다.
"URL은 비워 둘 수 없습니다"와 같이 대문자로 된 단어로 전체 메시지를 시작하려면 수행 할 수 없습니다. 대신 다른 단어를 키로 추가하십시오.
def custom_validation_method_with_message
if some_model_attribute.blank?
errors.add(:the, "URL can't be blank")
end
end
이제 전체 메시지는 "URL은 비워 둘 수 없습니다"입니다.