Изменение формата отображения ошибок в Rails ActionView Helpers - PullRequest
0 голосов
/ 23 октября 2010

Я пытаюсь изменить поведение по умолчанию при отображении ошибок перед формой, чтобы они отображались рядом с полями.

Я использую это для достижения этого:

  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

Однако по какой-то причине HTML-код результата закодирован с сущностями, поэтому он не отображается:

<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>

Как я могу избежать результата html_entitied?

1 Ответ

0 голосов
/ 23 октября 2010

Это потому, что ваша строка не безопасна. Вам нужно вызвать html_safe после того, как строка сгенерирует

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...