【问题标题】:Rails Error Validations show below the FieldRails 错误验证显示在字段下方
【发布时间】:2015-05-28 18:06:50
【问题描述】:

我想在其字段旁边使用 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 partial as;

<% 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 %>

我知道它只是接收错误消息并将它们显示为列表。我认为应该有一种方法来检查每个字段的哈希中的错误。就是不知道怎么弄。

感谢您的帮助!

【问题讨论】:

  • 你可以查看简单的表单 gem

标签: ruby-on-rails ruby error-handling partial


【解决方案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) %>

【讨论】:

  • 感谢您的帮助,但是有没有更简单的方法可以做到这一点?考虑到我有很多表格,意味着我必须创建很多,&lt;%= errors_for(....., .......) %&gt; (......将针对每个标签进行更改)
  • 那么,正如@Amit Sharma 所说,simple_form 是解决您问题的正确方法
猜你喜欢
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
相关资源
最近更新 更多