我想在其Fields旁边使用Rails的错误消息。例如;
我有一个表单来创建新用户;
<h1>Sign up</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
</div>
</div>
我使用,_error_messages.html.erb
部分为;
<% if object.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
The form contains <%= pluralize(object.errors.count, "error") %>.
</div>
<ul>
<% object.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
我知道它只是接收错误消息并将其显示为列表。我认为应该有一种方法来检查每个字段的哈希值中的错误。只是不知道如何。
感谢您的帮助!
答案 0 :(得分:1)
您可以创建一个辅助方法,该方法将当前对象和属性名称作为参数,并生成必要的html以显示内联/字段旁边的错误。像
def errors_for(object, field_name)
if object.errors.any? && object.errors.messages[field_name]
object.errors.messages[field_name].join(', ')
end
end
然后你可以简单地从你的表单中调用这个帮助方法
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= errors_for(@user, :email) %>