Ruby中的简单表单验证无法正常工作

时间:2014-02-28 18:08:33

标签: ruby-on-rails ruby forms validation devise

我的Ruby on Rails项目中有几个表单都需要验证。对于一个用于创建用户的方法,f.error_notification方法可以很好地显示错误,我相信因为它正在使用用户模型。但是,我有另一种形式来编辑密码,这种形式无法正常工作。我正在尝试使用所有相同的方法,以便所有错误消息在网站上的任何地方显示相同。我遇到的问题是,如果密码不匹配(或者存在任何其他类型的问题),f.error_notification会在顶部显示为红色:Please review the problems below.应该如此。但它实际上并没有显示下面的任何问题。

这是表格:

<h2>Change your password</h2>

<%= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name),  :html => { :method => :put }) do |f| %>
  <%= f.error_notification %>
  <%= f.hidden_field :reset_password_token %>

  <div><%= f.label :password, "New password" %><br />
  <%= f.password_field :password, :autofocus => true, required: true %></div><br />

  <div><%= f.label :password_confirmation, "Confirm new password" %><br />
  <%= f.password_field :password_confirmation, required: true %></div>
  <br>
  <%= button_tag(type: 'submit', class: "btn doc-action-btn btn-success") do %>
      <i class="glyphicon glyphicon-check"></i> Change my password
  <% end %>
<% end %>

我不确定还有什么可以发布代码以帮助更清楚但我很高兴更新我的帖子,如果我还可以添加其他内容。我还应该注意,上面的表格是由Devise生成的。为了保持一致性,我从Devise错误消息切换到Rails消息,因为我们在自定义表单中的其他地方使用了Rails个消息。谢谢!

1 个答案:

答案 0 :(得分:0)

您必须使用devise_error_messages!方法。它是一种特殊的设计方法,可以处理显示错误。除非您完全自定义,否则无法来回翻转。

如果您想要自定义它,可以查看https://github.com/plataformatec/devise/wiki/Override-devise_error_messages!-for-views