1

所以我在我的 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 参数也始终为空。

4

1 回答 1

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 %>
于 2013-05-23T04:43:52.713 回答