在部分表单上获取验证错误

时间:2013-05-23 04:10:17

标签: ruby-on-rails forms validation

所以我的Rails应用程序中有一个表单位于_form.html.erb

我在我网站的每个页面上都显示了这个部分内容,因此它背后并没有任何模型逻辑,用户创建的表单在视图中即时生成:

<%= form_for User.new, :validate => true do |f| %>
  <table>
    <tr>
      <td><%= f.label :invitation_token, "Invite Token" %></td>
      <td><%= f.text_field :invitation_token, :placeholder => "From your inbox&hellip;".html_safe %></td>
    </tr>
    <tr>
      <td colspan="2"><br><%= f.submit "Sign Up" %></td>
    </tr>
  </table>
<% end %>

我的用户模型中有一些验证,但重新加载后如何在视图中显示这些验证错误?

我已尝试过User.new.errors.inspect,但即使出现验证错误,messages参数也始终为空。

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。由于您可能希望在许多地方呈现这些错误消息,请在您的视图app/views/shared/_error_messages.html.erb中创建一个共享文件夹并添加此部分:

<% if object.errors.any? %>
  <ul>
    <% object.errors.full_messages.each do |msg| %>
      <li>* <%= msg %></li>
    <% end %>
  </ul>
<% end %>

现在在您的视图中添加代码,以便在form for

下方的表单中呈现错误消息
<%= render 'shared/error_messages', object: f.object %>