【问题标题】:Rails group errorsRails 组错误
【发布时间】:2015-04-27 22:09:11
【问题描述】:

我有一个很大的Project 模型,我使用许多选项卡来显示表单的不同部分。

想法:每个选项卡为我的模型重新组合字段的特定子集,如果有错误,我想用红色突出显示选项卡的标题。

嵌套关联非常简单,因为我只需要检查object.errors[:association].any?

但是对于所有其他领域,这将是非常乏味的

object.errors[:name] or object.errors[:start_date] or object.error[:end_date]...

有没有办法将一些错误组合在一起?如果:name, :start_date...中有错误,则以下内容应返回true...

object.errors[:basic_params].any?

在我的 HTML 中是这样的

<ul class="nav nav-tabs" role="tablist">
    <li><a href="#tab-summary" data-toggle="tab">Résumé</a></li>
    <li><a href="#tab-echanges" data-toggle="tab"
        <%= 'class="text-danger"'.html_safe if @etude.errors[:echanges].any? %>>Echanges</a>
    </li>
    <li><a href="#tab-params" data-toggle="tab"
        <%= 'class="text-danger"'.html_safe if @etude.errors[:basic_params].any? %>>Paramètres</a>
    </li>
    <li><a href="#tab-phases" data-toggle="tab"
        <%= 'class="text-danger"'.html_safe if @etude.errors[:phases].any? %>> Phases</a>
    </li>
    <li><a href="#tab-candidatures" data-toggle="tab"
        <%= 'class="text-danger"'.html_safe if @etude.errors[:competences].any? %>> Candidatures</a>
    </li>

同时我知道我可以做这样的事情,但我真的很想有一些错误分组系统。

[:name, :start_date, :end_date].each do |field|
  return true if object.errors.include?(field)
end

【问题讨论】:

  • 你的意思是喜欢这个宝石:github.com/adzap/grouped_validations?
  • 他妈的。是的,一点没错。 gem 已经很老了,但我相信它仍然可以与 Rails 4 一起使用?如果是,那么您可以添加一个正确的答案,我将标记为已接受的解决方案。
  • 哎哟。根据问题,它与 rails 4.1+ 不兼容
  • 呃,花了我一段时间,但设法让它适用于 rails 4.1+。 github.com/BroiSatse/grouped_validations。或者,您可以查看改革者 gem - 它是 Rails 中一种新的趋势架构的一部分,称为开拓者。可能对你有用。
  • 忘记添加:分支名称rails_4.1

标签: ruby-on-rails ruby ruby-on-rails-4 error-handling


【解决方案1】:

我无法精确匹配您想要的 :[] 查找语法,但如果这就是您想要做的全部,为什么不直接使用如下结构?

example_params = [:name, :start_date, :end_date]
errors.any? { |e| example_params.include? e }

【讨论】:

    猜你喜欢
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多