在我的模型中,我有以下设置。它正确验证了这些属性,但是在使用simple_form时没有显示验证。
class Node < ActiveRecord::Base
store :system_settings, accessors: [:attr_1, :attr_2, :attr_3], coder: HashWithIndifferentAccess
validates :attr_1, presence: true
validates :attr_2, presence: true
validates :attr_3, presence: true
end
我的表单设置如下
= simple_form_for @node, html: {class: 'form-horizontal system-settings-form', multipart: true}, remote: true do |f|
= f.error_notification
= f.simple_fields_for :system_settings do |s|
= s.input :attr_1, input_html: {value: f.object.system_settings[:attr_1]}
= s.input :attr_2, input_html: {value: f.object.system_settings[:attr_2]}
= s.input :attr_3, input_html: {value: f.object.system_settings[:attr_3]}
我可能没有正确使用表单,因为我不得不强制使用值而不是simple_form来实现它的魔力(我不会想到更好的方法)。有人可以帮我设置此表单以接收这些字段的验证错误吗?
答案 0 :(得分:0)
您可以在表单的顶部添加一行代码:
<% if @node.errors.any? %>
<ul>
<%= s.errors.full_messages.each do |msg| %>
<li> <%= msg %></li>
<% end %>
</ul>
<% end %>
您可以列出所有错误,也可以只列出第一个错误。错误是一个数组,因此您可以根据需要进行迭代。