4

validates 関数内のカスタム検証エラー メッセージに 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 として解釈することなく、単純に文字列リテラルが得られます。

locale を使用してみましたが、より複雑な方法のようです。私はたくさんのウェブサイトをグーグルで検索し、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

上記は機能しますが、意図したよりも 2 倍の数のエラー メッセージが表示されます。

ここで何か助けていただければ幸いです。

エラーメッセージの部分的に .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 %>
4

1 に答える 1

4

エラーを出力するときは、使用しますraw

<%= raw f.errors %>
于 2012-04-17T22:34:29.250 に答える