0

私はたくさんのフィールドを持つ大きなフォームを持っています。レールでエラーを返す方法は、それらがモデルオブジェクト内にあるということです。個別に表示するのではなく、各フィールド以外にエラーを表示するクリーンな方法が必要です。これを行うことができる宝石はありますか、そして今ならそれを行うための最良の方法は何でしょうか。

エラーが発生しているフィールドのほかに、各エラーを表示したいと思います。

4

2 に答える 2

5

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">&nbsp;</span>).html_safe
  end
end

CSSクラスのvalidation-errorを必ず定義してください。それで動作するはずです。その後、ニーズに合わせて微調整できます。CSSは、input、textarea、selectなどの各フィールドタイプに固有である可能性があることに注意してください。

そしてもちろん、Railsアプリを再起動します。

私は実際にSOの別のスレッドでこれを学びましたが、今は見つからないため、リファレンスを提供できません。

于 2012-06-04T13:09:53.867 に答える
3

simple_formまたはformtasticこれを簡単にしてみてください。それらを使用すると、探していることを自動的に実行します。

ビューを非常に長くしたい場合、または単にgemを使用したくない場合は、次のようにすることもできます。

<span class="help-inline"><%= @object.errors[:field] %></span>

しかし、それはすぐに厄介になります。

于 2012-06-03T23:56:32.877 に答える