bru*_*077 9 ruby validation ruby-on-rails simple-form twitter-bootstrap
我有一个Flight嵌套在FlightLog模型中的模型.A FlightLog可能包含许多航班.
我正在使用SimpleForm和bootstrap安装,这使得在验证失败时可以包含错误类错误的表单元素.
问题是,即使为嵌套模型触发了验证,simple_fields_for中有错误的字段也没有被标记,因此无法确定哪个属性无效.
在调用create action时检查错误哈希后,我可以看到它正确填充了顶层的错误,以及每个资源中嵌套资源的错误.
如何修改simple_form的行为以将errors类添加到每个嵌套模型的控件组以匹配父行为?
提前致谢.

Hol*_*est 20
如果你使用带引导程序的simple_form,这确实有效 - 你只需要正确设置几个项目:
1 - 使用simple_form引导包装器(来自simple_form 2.0) - 你可以在github repo下找到它们config/initializers/simple_form.rb(https://github.com/rafaelfranca/simple_form-bootstrap)
2 - 对于显示错误的嵌套表单,您必须确保提供对象. f.simple_fields_for :nested_model将无法工作,您需要使用f.simple_fields_for parent_model.nested_model或f.simple_fields_for :nested_model, parent_model.nested_model使表单可以获得必要的对象.
如果仍然没有得到任何结果,请通过在嵌套对象上输出错误数据来验证表单是否真正获得了您认为的对象,并出现错误: parent_model.nested_model.errors.full_messages.to_sentence
我一直在使用自定义访问器而不是 _id 字段,因此这就是为什么他们在出现错误时没有收到通知。我最终决定在每个访问器下使用 f.error :attr_name 并使用 JS 手动更改样式