javascript - client side validation only shows up on one of two nested simple_fields_for -


i've got simple_form_for 2 nested simple_fields_for in it. have installed gem client_side_validations generate client side validations. works 1 of 2 nested simple_fields_for. updated client_side_validations latest version (3.2.6), doesn't helped. played little bit ryan bates railscast example app client_side_validation #263 trying work there. there worked same setup expected. in app not. striped away in app identify error. looked similar working railscast app. validation in simple_fields_for :yearkontakts form doesn't show up.the javascript seems generated properly. far can see there no cause behavior. there can me find solution?

thanks in advance!

this generated html:

<form accept-charset="utf-8" action="/schools" class="simple_form form-horizontal" data-validate="true" id="new_school" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="jwkd6yuwm/474gjpive2h3e7+skhyesby/d6ox0/7m0=" /></div>   <p>school</p>   <div class="control-group string required school_name"><label class="string required control-label" for="school_name"><abbr title="required">*</abbr> name</label><div class="controls"><input class="string required" id="school_name" name="school[name]" size="50" type="text" /></div></div>   <div class="control-group string required school_street"><label class="string required control-label" for="school_street"><abbr title="required">*</abbr> street</label><div class="controls"><input class="string required" id="school_street" name="school[street]" size="50" type="text" /></div></div>   <div class="control-group string required school_plz"><label class="string required control-label" for="school_plz"><abbr title="required">*</abbr> plz</label><div class="controls"><input class="string required" id="school_plz" name="school[plz]" size="50" type="text" /></div></div>   <div class="control-group string required school_city"><label class="string required control-label" for="school_city"><abbr title="required">*</abbr> city</label><div class="controls"><input class="string required" id="school_city" name="school[city]" size="50" type="text" /></div></div>   <div class="control-group select required school_state_id"><label class="select required control-label" for="school_state_id"><abbr title="required">*</abbr> state</label><div class="controls"><select class="select required" id="school_state_id" name="school[state_id]"><option value=""></option> <option value="2">baden-württemberg</option> <option value="3">bayern</option> <option value="4">berlin</option> <option value="5">brandenburg</option> <option value="6">bremen</option> <option value="7">hamburg</option> <option value="8">hessen</option> <option value="9">mecklenburg-vorpommern</option> <option value="10">niedersachsen</option> <option value="11">nordrhein-westfalen</option> <option value="12">rheinland-pfalz</option> <option value="13">saarland</option> <option value="14">sachsen</option> <option value="15">sachsen-anhalt</option> <option value="16">schleswig-holstein</option> <option value="17">thüringen</option></select></div></div>   <p>     year</p>      <div class="control-group select required school_years_jahrgang_id"><label class="select required control-label" for="school_years_attributes_0_jahrgang_id"><abbr title="required">*</abbr> jahrgang</label><div class="controls"><select class="select required" id="school_years_attributes_0_jahrgang_id" name="school[years_attributes][0][jahrgang_id]"><option value=""></option> <option value="4">2012 / 2013</option> <option value="5">2013 / 2014</option></select></div></div>     <div class="control-group select required school_years_count_id"><label class="select required control-label" for="school_years_attributes_0_count_id"><abbr title="required">*</abbr> count</label><div class="controls"><select class="select required" id="school_years_attributes_0_count_id" name="school[years_attributes][0][count_id]"><option value=""></option> <option value="2">weniger als 40</option> <option value="3">40 - 60</option> <option value="4">60 - 80</option> <option value="5">80 - 100</option> <option value="6">100 - 120</option> <option value="7">120 - 140</option> <option value="8">140 - 160</option> <option value="9">mehr als 160</option></select></div></div>     <div class="control-group select required school_years_schuldauer_id"><label class="select required control-label" for="school_years_attributes_0_schuldauer_id"><abbr title="required">*</abbr> schuldauer</label><div class="controls"><select class="select required" id="school_years_attributes_0_schuldauer_id" name="school[years_attributes][0][schuldauer_id]"><option value=""></option> <option value="2">12 jahre</option> <option value="3">13 jahre</option> <option value="4">12 und 13 jahre</option></select></div></div>     <p>       contact</p>        <div class="control-group select required school_years_yearkontakts_sex"><label class="select required control-label" for="school_years_attributes_0_yearkontakts_attributes_0_geschlecht_id"><abbr title="required">*</abbr> sex</label><div class="controls"><select class="select required" id="school_years_attributes_0_yearkontakts_attributes_0_geschlecht_id" name="school[years_attributes][0][yearkontakts_attributes][0][geschlecht_id]"><option value=""></option> <option value="2">herr</option> <option value="4">frau</option></select></div></div>       <div class="control-group string required school_years_yearkontakts_vorname"><label class="string required control-label" for="school_years_attributes_0_yearkontakts_attributes_0_vorname"><abbr title="required">*</abbr> vorname</label><div class="controls"><input class="string required" id="school_years_attributes_0_yearkontakts_attributes_0_vorname" name="school[years_attributes][0][yearkontakts_attributes][0][vorname]" size="50" type="text" /></div></div>       <div class="control-group string required school_years_yearkontakts_nachname"><label class="string required control-label" for="school_years_attributes_0_yearkontakts_attributes_0_nachname"><abbr title="required">*</abbr> nachname</label><div class="controls"><input class="string required" id="school_years_attributes_0_yearkontakts_attributes_0_nachname" name="school[years_attributes][0][yearkontakts_attributes][0][nachname]" size="50" type="text" /></div></div>       <div class="control-group email required school_years_yearkontakts_email"><label class="email required control-label" for="school_years_attributes_0_yearkontakts_attributes_0_email"><abbr title="required">*</abbr> email</label><div class="controls"><input class="string email required" id="school_years_attributes_0_yearkontakts_attributes_0_email" name="school[years_attributes][0][yearkontakts_attributes][0][email]" size="50" type="email" /></div></div>       <div class="control-group text optional school_years_yearkontakts_notizen"><label class="text optional control-label" for="school_years_attributes_0_yearkontakts_attributes_0_notizen">notizen</label><div class="controls"><textarea class="text optional" cols="40" id="school_years_attributes_0_yearkontakts_attributes_0_notizen" name="school[years_attributes][0][yearkontakts_attributes][0][notizen]" rows="20"></textarea></div></div>   <input name="commit" type="submit" value="create school" /> </form> 

and generated javascript:

<script>//<![cdata[ if(window.clientsidevalidations===undefined)window.clientsidevalidations={};window.clientsidevalidations.disabled_validators=[];window.clientsidevalidations.number_format={"separator":".","delimiter":","};if(window.clientsidevalidations.patterns===undefined)window.clientsidevalidations.patterns = {};window.clientsidevalidations.patterns.numericality=/^(-|\+)?(?:\d+|\d{1,3}(?:\,\d{3})+)(?:\.\d*)?$/;if(window.clientsidevalidations.forms===undefined)window.clientsidevalidations.forms={};window.clientsidevalidations.forms['new_school'] = {"type":"simpleform::formbuilder","error_class":"help-inline","error_tag":"span","wrapper_error_class":"error","wrapper_tag":"div","wrapper_class":"control-group","wrapper":"bootstrap","validators":{"school[years_attributes][][yearkontakts_attributes][][geschlecht_id]":{"presence":[{"message":"can't blank"}]},"school[years_attributes][][yearkontakts_attributes][][vorname]":{"presence":[{"message":"can't blank"}]},"school[years_attributes][][yearkontakts_attributes][][nachname]":{"presence":[{"message":"can't blank"}]},"school[years_attributes][][yearkontakts_attributes][][email]":{"presence":[{"message":"can't blank"}]},"school[years_attributes][][jahrgang_id]":{"presence":[{"message":"can't blank"}]},"school[years_attributes][][count_id]":{"presence":[{"message":"can't blank"}]},"school[years_attributes][][schuldauer_id]":{"presence":[{"message":"can't blank"}]},"school[name]":{"length":[{"messages":{"minimum":"is short (minimum 4 characters)"},"allow_blank":true,"minimum":4}],"presence":[{"message":"can't blank"}]},"school[street]":{"presence":[{"message":"can't blank"}]},"school[plz]":{"presence":[{"message":"can't blank"}]},"school[city]":{"presence":[{"message":"can't blank"}]},"school[state_id]":{"presence":[{"message":"can't blank"}]}}}; //]]></script> 

this school_controller:

class schoolscontroller < applicationcontroller   # /schools/new   # /schools/new.json   def new     @school = school.new     @year = @school.years.build     @yearkontakt = @year.yearkontakts.build     @standardformat = @school.standardformats.build     respond_to |format|       format.html # new.html.erb       format.json { render json: @school }     end   end  end 

this form:

<%= simple_form_for @school, :html => { :class => "form-horizontal"}, :validate => true |s| %>   <p>school</p>   <%= s.input :name %>   <%= s.input :street %>   <%= s.input :plz %>   <%= s.input :city%>   <%= s.input :state_id, collection: state.all %>   <p>     year</p>   <%= s.simple_fields_for :years, :year |y| %>     <%= y.input :jahrgang_id, collection: yearname.yearnames_aktuell_future %>     <%= y.input :count_id, collection: count.all%>     <%= y.input :schuldauer_id, collection: length.all %>     <p>       contact</p>     <%= y.simple_fields_for :yearkontakts, :yearkontakt |yk| %>       <%= yk.association :sex %>       <%= yk.input :vorname %>       <%= yk.input :nachname %>       <%= yk.input :email %>       <%= yk.input :notizen  %>     <% end %>   <% end %>   <%= s.submit %> <% end %> 

and here 3 models

school:

class school < activerecord::base   has_many :years, :dependent => :destroy   belongs_to :state   validates_length_of :name, :minimum => 4, :allow_blank => true   validates_presence_of :name   validates_presence_of :street   validates_presence_of :state_id   validates_presence_of :plz   validates_presence_of :city   accepts_nested_attributes_for :years end 

year:

class year < activerecord::base   has_many :yearkontakts, :dependent => :destroy   belongs_to :count   belongs_to :yearname, :foreign_key => "jahrgang_id"   belongs_to :length, :foreign_key => "schuldauer_id"   belongs_to :school   validates_presence_of :jahrgang_id   validates_presence_of :schuldauer_id   validates_presence_of :count_id   accepts_nested_attributes_for :yearkontakts end 

yearkontakt:

class yearkontakt < activerecord::base     belongs_to :sex, :foreign_key => :geschlecht_id     belongs_to :year     validates_presence_of :vorname     validates_presence_of :nachname     validates_presence_of :geschlecht_id     validates_presence_of :email end 

update (2013-08-20):

i tried nest simple_fields_for form on same level :yearcontacts. new form showed no client side validation, too! seems me there no problem yearcontact model.

another finding was, if i'm changing simple_fields_for block from:

<%= y.simple_fields_for :yearkontakts, :yearkontakt |yk| %>    <%= yk.association :sex %>    <%= yk.input :vorname %>    <%= yk.input :nachname %>    <%= yk.input :email %>    <%= yk.input :notizen  %> <% end %> 

to

<%= y.simple_fields_for @yearkontakt |yk| %>    <%= yk.association :sex %>    <%= yk.input :vorname %>    <%= yk.input :nachname %>    <%= yk.input :email %>    <%= yk.input :notizen  %> <% end %> 

then client side validation works. create controller can't identify @yearkontakt data nested attributes @year.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -