【问题标题】:Rails form inline errorsRails 形成内联错误
【发布时间】:2012-06-03 21:34:10
【问题描述】:

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

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

【问题讨论】:

  • 获取每个字段 (@object.errors[field_name]) 的错误并在表单中对其进行迭代。我认为某些表单 gem 可以做到这一点,但我不确定是哪一个。

标签: ruby-on-rails ruby-on-rails-3 validation


【解决方案1】:

假设您使用的是 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 可以特定于每个字段类型,例如 input、textarea、select 等。

当然还有重启 Rails 应用程序。

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

【讨论】:

  • 这正是我一直在寻找的,但有没有办法将它作为一个类或其他东西拉到 lib 文件夹中。 application.rb 中的代码并不真正符合维护的最佳利益
【解决方案2】:

请尝试simple_formformtastic 以简化此操作。有了这些,它会自动执行您要查找的操作。

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

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

但这很快就会变得恶心。

【讨论】:

  • 它一点也不难看,但你应该迭代它们(或使用帮助器),因为它是一个每个字段的集合。
猜你喜欢
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多