настраиваемые сообщения об ошибках проверки с помощью html

Есть ли способ добавить html в пользовательские сообщения об ошибках проверки в функции проверки?

Например:

class Product < ActiveRecord::Base
  validates :legacy_code, :format => { :with => /\A[a-zA-Z]+\z/,
    :message => "Only letters allowed <a href=\"www.example.com\"> Check here </a> " }
end

Выполнение вышеприведенного просто дает строковый литерал без того, чтобы браузер интерпретировал его как html с тегом.

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

Например:

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

end

Приведенное выше работает, но выдает в два раза больше сообщений об ошибках, чем предполагалось.

Любая помощь здесь будет принята с благодарностью.

Решено с помощью .html_safe в частичном сообщении об ошибке:

<% if @user.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      The form contains <%= pluralize(@user.errors.count, "error") %>.
    </div>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li>* <%= msg.html_safe %></li>
    <% end %>
    </ul>
  </div>
<% end %>

person railsnoob123    schedule 17.04.2012    source источник
comment
Просто убедитесь, что пользователь не может что-либо вставить в ваши сообщения об ошибках без их очистки.   -  person David Ljung Madison Stellar    schedule 16.06.2016


Ответы (1)


Когда вы выводите свою ошибку, используйте raw

<%= raw f.errors %>
person Kyle Macey    schedule 17.04.2012
comment
Привет, Кайл, спасибо. где мне поставить эту команду? Я использую рельсы 3.2.3, и у меня есть эта строка в представлении формы: ‹%= render 'shared/error_messages', объект: f.object %› - person railsnoob123; 18.04.2012
comment
В ваших сообщениях об ошибках частично, я полагаю? app/views/shared/_error_messages.* - person Kyle Macey; 18.04.2012
comment
Привет, Кайл, спасибо! что я сделал, так это использовал команду .html_safe в сообщении об ошибке, как в приведенном выше отредактированном вопросе. Вы правильно поняли, мне нужно отредактировать частичный файл error_messages :) 2 больших пальца вверх! - person railsnoob123; 18.04.2012