2012-04-17 54 views
4

は、検証し、関数内のカスタム検証エラーメッセージに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 %> 
+0

を使用しますそれを消毒することなく何かをあなたのエラーメッセージに入れてください。 –

答えて

4

あなたのエラー、あなたが出力、ただ、ユーザーはする能力を持っていないことを確認してくださいraw

<%= raw f.errors %> 
+0

こんにちはカイル、ありがとう。このコマンドはどこに置くのですか?私はレール3.2.3を使用していますが、フォームビューに次の行があります。<%= render 'shared/error_messages'、オブジェクト:f.object%> – railsnoob123

+0

エラーメッセージが部分的にはどうでしょうか? 'app/views/shared/_error_messages。* ' –

+0

こんにちはカイル、ありがとう!上記の編集された質問のように、エラーメッセージに.html_safeコマンドを使用することでした。あなたはそれを正しく持っている、私は部分的なerror_messagesファイルを編集する必要があります:) 2サムズアップ! – railsnoob123

関連する問題