私の Rails アプリでは、アクティブなレコード オブジェクトで検証ヘルパーを使用していますが、それらは素晴らしいものです。問題が発生すると、Web ページに標準の「3 つのエラーにより、この foobar を保存できませんでした」というメッセージが個々の問題とともに表示されます。
このデフォルトのメッセージを自分のメッセージで上書きする方法はありますか?
私の Rails アプリでは、アクティブなレコード オブジェクトで検証ヘルパーを使用していますが、それらは素晴らしいものです。問題が発生すると、Web ページに標準の「3 つのエラーにより、この foobar を保存できませんでした」というメッセージが個々の問題とともに表示されます。
このデフォルトのメッセージを自分のメッセージで上書きする方法はありますか?
エラーの表示に使用しているヘルパーは、デフォルトのヘッダーテキストを変更できるオプションをerror_messages_for受け入れます。:header_messageのように:
error_messages_for 'model', :header_message => "You have some errors that prevented saving this model"
RubyOnRailsAPIはあなたの友達です。
モデルの "validates_" メソッドはすべて、通常、:message => "My Validation Message"パラメータを渡すことができます。
私は通常、エラーを次のようにラップします。
<% if(!@model.errors.empty?) %>
<div id="error_message">
<h2>
<%= image_tag("error.png", :align => "top", :alt => "Error") -%>
Oops, there was a problem editing your information.
</h2>
<%= short_error_messages_for(:model) %>
</div>
<% end %>
次に、application_helperでエラーを反復処理し、単純なリストを生成します。
def short_error_messages_for(object_name)
object = instance_variable_get("@#{object_name}")
if object && !object.errors.empty?
content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) } )
else
""
end
end
そのコードはかなり古く、おそらく最近の Ruby の書き方ではありませんが、要点はわかります。
エラー ヘルパーを使用する代わりに、model.errors ハッシュを自分で反復処理できます。