2010-10-22 5 views
0

J'essaie de modifier le comportement par défaut d'affichage des erreurs avant le formulaire pour les afficher à côté des champs.Modification du format d'affichage des erreurs dans Rails ActionView Helpers

J'utilise ceci pour y parvenir:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance| 
     if instance.error_message.kind_of?(Array) 
     %(#{html_tag}<span class="validation-error">&nbsp; 
     #{instance.error_message.join(',')}</span>) 
     else %(#{html_tag}<span class="validation-error">&nbsp; 
     #{instance.error_message}</span>) 
     end 
    end 

Cependant, pour une raison quelconque, le résultat html est codé avec des entités, de sorte qu'il ne soit pas affiché:

<div class="group"> 
    <label class="label" for="user_city">City and Postcode</label> 
    <input class="text_field" id="user_city" name="user[city]" size="30" type="text" value="94-050 Łódź" /> 
    <span class="description">np. 00-000 Łódź</span> 

    </div> 
    <div class="group"> 
    &lt;label class=&quot;label&quot; for=&quot;user_street&quot;&gt;Address&lt;/label&gt;&lt;span class=&quot;validation-error&quot;&gt;&amp;nbsp; 
     translation missing: pl, activerecord, errors, models, user, attributes, street, blank&lt;/span&gt; 

    &lt;input class=&quot;text_field&quot; id=&quot;user_street&quot; name=&quot;user[street]&quot; size=&quot;30&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;&lt;span class=&quot;validation-error&quot;&gt;&amp;nbsp; 
     translation missing: pl, activerecord, errors, models, user, attributes, street, blank&lt;/span&gt; 

    <span class="description"> &nbsp;</span> 
    </div> 

Comment puis-je éviter que le résultat soit html_entitied?

Répondre

0

C'est parce que votre chaîne n'est pas sûre. Vous devez appeler html_safe après la chaîne générer

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance| 
     if instance.error_message.kind_of?(Array) 
     %(#{html_tag}<span class="validation-error">&nbsp; 
     #{instance.error_message.join(',')}</span>).html_safe 
     else %(#{html_tag}<span class="validation-error">&nbsp; 
     #{instance.error_message}</span>).html_safe 
     end 
    end 
Questions connexes