我有一个包含很多字段的大型表单,我们在 rails 中获取错误的方式是它们驻留在模型对象中。我想要一种干净的方式来显示每个字段之外的错误,而不是单独显示。是否有可以做到这一点的宝石,如果现在是最好的方法。
我希望每个错误都显示在错误所在的字段之外。
我有一个包含很多字段的大型表单,我们在 rails 中获取错误的方式是它们驻留在模型对象中。我想要一种干净的方式来显示每个字段之外的错误,而不是单独显示。是否有可以做到这一点的宝石,如果现在是最好的方法。
我希望每个错误都显示在错误所在的字段之外。
假设您使用的是 Rails 3+ 和 Rails 表单助手,您不需要任何 gem,也不需要遍历错误集合。
好吧,这并不完全正确,但 Rails 为您做到了。你只需要提供一个过程。
我将以下内容添加到 .../config/application.rb:
# wrap each form field that has an error with the following.
# note, condition for arrays and singletons.
config.action_view.field_error_proc = Proc.new do |html_tag, instance|
if instance.error_message.kind_of?(Array)
%(<span class="validation-error">#{html_tag}</span>).html_safe
else
%(#{html_tag}<span class="validation-error"> </span>).html_safe
end
end
确保定义 CSS 类验证错误。这应该让它工作,然后你可以调整它以满足你的需要。请注意,您的 CSS 可以特定于每个字段类型,例如输入、文本区域、选择等。
当然,重新启动 Rails 应用程序。
我实际上是在 SO 的另一个线程中学到的,但我现在找不到它,所以我无法提供参考。
尝试simple_form
或formtastic
使这更容易。有了这些,它会自动做你正在寻找的东西。
如果你想让你的视图真的很长,或者只是不想使用 gem,你也可以这样做:
<span class="help-inline"><%= @object.errors[:field] %></span>
但这会很快变得恶心。