2016-05-27 6 views
0

In meinem Modell habe ich folgendes Setup. Diese Attribute werden zwar korrekt validiert, die Validierungen werden jedoch bei Verwendung von simple_form nicht angezeigt.So erhalten Sie Validierungen, die mit simple_form in einer ActiveRecord Store-Spalte funktionieren

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 

Und meine Form ist Setup wie dieses

= 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]} 

Ich bin wahrscheinlich das Formular nicht richtig verwenden, weil ich die Werte statt simple_form tun ihre Magie zu zwingen, habe (ich würde nicht haben beachten Sie einen besseren Weg, dies zu tun). Kann mir bitte jemand helfen, dieses Formular einzurichten, um die Validierungsfehler für diese Felder zu erhalten?

Antwort

0

Sie können an der Spitze eine Linie in Ihrem Formular hinzufügen, dass Beiträge ihnen:

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

Sie können entweder Liste alle Fehler oder einfach nur die erste usw. Die Fehler ein Array, so dass Sie wie durch laufen kann gewünscht.

+0

Das ist in Ordnung, aber ich möchte Simple_form dafür verwenden. Es kann viel mächtigere Dinge als das tun. –

Verwandte Themen