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"> #{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 %>