私はたくさんのフィールドを持つ大きなフォームを持っています。レールでエラーを返す方法は、それらがモデルオブジェクト内にあるということです。個別に表示するのではなく、各フィールド以外にエラーを表示するクリーンな方法が必要です。これを行うことができる宝石はありますか、そして今ならそれを行うための最良の方法は何でしょうか。
エラーが発生しているフィールドのほかに、各エラーを表示したいと思います。
私はたくさんのフィールドを持つ大きなフォームを持っています。レールでエラーを返す方法は、それらがモデルオブジェクト内にあるということです。個別に表示するのではなく、各フィールド以外にエラーを表示するクリーンな方法が必要です。これを行うことができる宝石はありますか、そして今ならそれを行うための最良の方法は何でしょうか。
エラーが発生しているフィールドのほかに、各エラーを表示したいと思います。
Rails3+とRailsFormHelpersを使用していると仮定すると、gemは必要なく、エラー収集を繰り返す必要もありません。
まあ、それは完全に真実ではありませんが、Railsはあなたのためにそれを行います。procを提供する必要があります。
以下を.../config/application.rbに追加します。
# wrap each form field that has an error with the following.
# note, condition for arrays and singletons.
config.action_view.field_error_proc = Proc.new do |html_tag, instance|
if instance.error_message.kind_of?(Array)
%(<span class="validation-error">#{html_tag}</span>).html_safe
else
%(#{html_tag}<span class="validation-error"> </span>).html_safe
end
end
CSSクラスのvalidation-errorを必ず定義してください。それで動作するはずです。その後、ニーズに合わせて微調整できます。CSSは、input、textarea、selectなどの各フィールドタイプに固有である可能性があることに注意してください。
そしてもちろん、Railsアプリを再起動します。
私は実際にSOの別のスレッドでこれを学びましたが、今は見つからないため、リファレンスを提供できません。
simple_form
またはformtastic
これを簡単にしてみてください。それらを使用すると、探していることを自動的に実行します。
ビューを非常に長くしたい場合、または単にgemを使用したくない場合は、次のようにすることもできます。
<span class="help-inline"><%= @object.errors[:field] %></span>
しかし、それはすぐに厄介になります。