我想在发生错误时突出显示我的输入字段,我完全知道如何在 form_for(rails do it) 中做到这一点。我在谷歌上搜索它,它只是告诉我 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 %>
最佳答案
错误
我们使用了一些 hacky 的努力实现了这一点 here (单击顶部的“注册”并尝试在没有数据的情况下提交):
#app/views/controller/your_form.erb
<%= form_tag ...... do %>
<%= content_tag :div, @user.errors[:attribute], class: "error" if @user.errors[:attribute].present? %>
<% end %>
每次将对象返回到经过验证的 View 时,它都应该有一个 errors
object。附上。
我不确定这是否可以直接与 form_tag
一起使用,但我确实知道它可以与 form_for
一起使用(您可能希望调查)。您应该阅读 ActiveModel::Errors
对象,当它们从验证返回时附加到模型对象
--
实现
如果您使用我在上面创建的代码,它基本上允许您显示分配给您的属性的任何错误,当它们存在时。
大多数人会推荐您使用 @object.errors.full_messages
方法 - 它基本上会显示您收到的错误的完整消息。这些 full_messages
基本上给你 attribute | message
- 这意味着如果您遍历 errors
对象,它应该允许您单独引用每个属性
如前所述,您可以在我上面的链接中看到这个想法的演示!
关于ruby-on-rails - 如何使用 <div class ="field_with_error"> 突出显示 form_tag 中的错误字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24546016/