Rails 错误验证显示在字段下方
Rails Error Validations show below the Field
我想在其字段旁边使用 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 %>
我知道它只接受错误消息并将它们显示为列表。我认为应该有一种方法来检查每个字段的散列中的错误。只是不知道如何。
感谢您的帮助!
您可以创建一个辅助方法,它将当前对象和属性名称作为参数并生成必要的 html 以向字段显示错误 inline/next。喜欢
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) %>
我想在其字段旁边使用 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 %>
我知道它只接受错误消息并将它们显示为列表。我认为应该有一种方法来检查每个字段的散列中的错误。只是不知道如何。
感谢您的帮助!
您可以创建一个辅助方法,它将当前对象和属性名称作为参数并生成必要的 html 以向字段显示错误 inline/next。喜欢
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) %>