【问题标题】:Simple Form Validation in Ruby not working correctlyRuby 中的简单表单验证无法正常工作
【发布时间】:2014-02-28 18:08:32
【问题描述】:

我的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 错误消息。谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    如果你想定制它,你可以检查这个https://github.com/plataformatec/devise/wiki/Override-devise_error_messages!-for-views

    【讨论】:

    • 我试图避免这种情况,事实上我用f.error_notification 替换了它,正如我所说的,为了保持一致性。有没有办法自定义设计错误消息,以便它们显示在每个输入旁边而不是全部显示在顶部?
    猜你喜欢
    • 2012-11-18
    • 2012-04-22
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    相关资源
    最近更新 更多