ruby-on-rails - 如何使用 <div class ="field_with_error"> 突出显示 form_tag 中的错误字段

标签 ruby-on-rails ruby

我想在发生错误时突出显示我的输入字段,我完全知道如何在 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/

相关文章:

jquery - Bootstrap 图片库,作者:blueimp : How to disable the wheel handler and keyboard handler

javascript - rails : How to confirm email address entered in text box matches current user's email address?

ruby - 为什么这个 ruby 序列不适用于两位数?

ruby-on-rails - 自适应 Paypal

ruby-on-rails - 如何使用这些基于 ruby​​ 的 CSS 样式表框架语言?

ruby-on-rails - 无法在 Rails 5.1.2 项目上使用 Milia

arrays - Set in ruby​​ 的优点

ruby-on-rails - 当远程 git 位于非标准路径上时使用 capistrano

ruby - 使用 RegExp 格式化字符串以设置分隔符

ruby - << 符号绕过 = 在 ruby​​ 中签名吗?