9

FlightLogモデル内にFlightモデルがネストされています。 FlightLogには多数のフライトが含まれている場合があります。Rails 3.2 + SimpleFormでネストされたフォームのエラーのあるフィールドを表示

私はSimpleFormをブートストラップインストールで使用しています。これにより、検証が失敗した場合にエラーが発生したフォーム要素をエラークラスで囲むことができます。

問題は検証がネストされたモデルのためにトリガされているにもかかわらず、simple_fields_for内部エラーのフィールドはをマークされていないこと、であるので、それが有効ではありませんどの属性を判別することはできません。

createアクションを呼び出すときにエラーハッシュを調べた結果、トップレベルのエラーと各リソース内のネストされたリソースのエラーが正しく入力されていることがわかりました。

simple_formの動作を変更して、エラークラスを各ネストされたモデルのコントロールグループに追加して、親の動作に合わせることはできますか?

ありがとうございます。

enter image description here

答えて

2

私はカスタムを使用しています_idフィールドの代わりにアクセサーを使用するため、エラーが発生したときに通知を受け取ることができませんでした。私は最終的に、各アクセサの下にf.error:attr_nameを使用し、JSで手動でスタイリングを変更することを決議しました

20

あなたは、ブートストラップでsimple_formを使用している場合は、この作業を行います - あなただけ正しくいくつかの項目を設定する必要があります。

1 - (simple_form 2.0から)simple_formブートストラップラッパーを使用してください - あなたconfig/initializers/simple_form.rbhttps://github.com/rafaelfranca/simple_form-bootstrap

2 - エラーを表示するためにネストされたフォームを表示するには、オブジェクトを指定する必要があります。 f.simple_fields_for :nested_modelが機能しない場合は、f.simple_fields_for parent_model.nested_modelまたはf.simple_fields_for :nested_model, parent_model.nested_modelを使用して、フォームが必要なオブジェクトを取得できるようにする必要があります。

あなたはまだ何も得られない場合は、フォームが本当にあなたのネストされたオブジェクト上のエラーデータを出力することにより、エラーで、あなたはそれだと思うオブジェクトを取得していることを確認します。parent_model.nested_model.errors.full_messages.to_sentence

+0

提案をいただき、ありがとうございます。 – bruno077

+0

'parent_model.nested_model.errors.full_messages.to_sentence'は私のためには動作しませんが、' parent_model.errors.full_messages.to_sentence'は動作し、ネストされたモデルのエラーを表示します。ありがとう! –

+0

これは巨大な時間の救世主でした。私は十分にあなたに感謝することはできません –

関連する問題