如何使用<div class =“field_with_error”> </div>突出显示form_tag中的错误字段

时间:2014-07-03 06:01:37

标签: ruby-on-rails ruby

我想在发生错误时突出显示我的输入字段,我确切地知道如何在form_for(rails do it)中执行此操作。我在google上搜索它,它只是告诉我field_error_proc的东西,但似乎函数在form_tag中不起作用,这是我的代码:

<%= form_tag({controller: :user, action: :change_password, id: current_user.id}, {method: :patch}) do %>
  <%= render 'shared/error_messages', object: @user %>
  <h5>Old password:</h5>
  <%= password_field_tag :password %>
<% end %>

1 个答案:

答案 0 :(得分:3)

<强>错误

我们使用了一些不费吹灰的努力来实现这一目标here(点击顶部的“注册”并尝试提交没有数据):

#app/views/controller/your_form.erb
<%= form_tag ...... do %>
    <%= content_tag :div, @user.errors[:attribute], class: "error" if @user.errors[:attribute].present? %>
<% end %>

每次将对象返回到经过验证的视图时,都应该附加errors object

我不确定这是否可以直接与form_tag一起使用,但我知道它适用于form_for(您可能希望查看的内容)。您应该阅读从验证

返回时附加到模型对象的ActiveModel::Errors对象

-

<强>实施

如果您使用我在上面创建的代码,它基本上允许您显示分配给您的属性的任何错误。

大多数人会将您推荐给@object.errors.full_messages方法 - 它基本上会显示您收到的错误的完整消息。这些full_messages基本上会为您提供attribute | message - 这意味着如果您遍历errors对象,则应该允许您单独引用每个属性

如上所述,您可以在上面的链接中看到这个想法的演示!