我想在发生错误时突出显示我的输入字段,我确切地知道如何在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 %>
答案 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
对象,则应该允许您单独引用每个属性
如上所述,您可以在上面的链接中看到这个想法的演示!