【问题标题】:How to get validations working with simple_form on an ActiveRecord Store column如何在 ActiveRecord 存储列上使用 simple_form 进行验证
【发布时间】:2016-05-27 15:09:35
【问题描述】:

在我的模型中,我有以下设置。它正确验证了这些属性,但是使用 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 发挥它的魔力(我不介意有更好的方法来做到这一点)。有人可以帮我设置此表单以接收这些字段的验证错误吗?

【问题讨论】:

    标签: ruby-on-rails activerecord serialization simple-form


    【解决方案1】:

    您可以在表单顶部添加一行来发布它们:

    <% if @node.errors.any? %>
      <ul>
         <%= s.errors.full_messages.each do |msg| %> 
          <li> <%= msg %></li>
         <% end %>
      </ul>
    <% end %>
    

    您可以列出所有错误或仅列出第一个错误等。错误是一个数组,因此您可以根据需要进行迭代。

    【讨论】:

    • 没关系,但我想为此使用 simple_form。它可以做比这更强大的事情。
    猜你喜欢
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多