0

我有一个包含很多字段的大型表单,我们在 rails 中获取错误的方式是它们驻留在模型对象中。我想要一种干净的方式来显示每个字段之外的错误,而不是单独显示。是否有可以做到这一点的宝石,如果现在是最好的方法。

我希望每个错误都显示在错误所在的字段之外。

4

2 回答 2

5

假设您使用的是 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">&nbsp;</span>).html_safe
  end
end

确保定义 CSS 类验证错误。这应该让它工作,然后你可以调整它以满足你的需要。请注意,您的 CSS 可以特定于每个字段类型,例如输入、文本区域、选择等。

当然,重新启动 Rails 应用程序。

我实际上是在 SO 的另一个线程中学到的,但我现在找不到它,所以我无法提供参考。

于 2012-06-04T13:09:53.867 回答
3

尝试simple_formformtastic使这更容易。有了这些,它会自动做你正在寻找的东西。

如果你想让你的视图真的很长,或者只是不想使用 gem,你也可以这样做:

<span class="help-inline"><%= @object.errors[:field] %></span>

但这会很快变得恶心。

于 2012-06-03T23:56:32.877 回答