2

Rails のモデルからいくつかのエラー メッセージを表示しようとしています。現在、testモデルで例外がキャッチされて発生すると、オブジェクトのエラー スコープで期待どおりにメッセージが返されます。メッセージは次のように返されます。

 {:key1=>["Your key needs to be different."], 
 :key2=>["Another exception"]}

正しいエラーに対して正しい例外がスローされるため、これは完璧です。私が今やろうとしているのは、これらのメッセージをフラッシュスコープにバインドして、ビューに表示できるようにすることです。私のコントローラーでは、例外が発生した場合、flash[:error]次のようにスコープにバインドします。

 flash[:error] = @test.errors.messages
 render :new

これを行うと、エラーはフラッシュスコープにバインドされますが、ビューに出力すると、次のように表示されます。

 [:error, {:key1=>["Your key needs to be different."], :key2=>["Another exception"]}]

私がやりたいのは、これらのメッセージをそれぞれ次のように表示することだけです。

 Your key needs to be different.
 Another exception.

上記の例では、レンダリングされるのはメッセージ テキストだけであることに注意してください。

上記の目的の出力を実現するために、コントローラーまたはビューで何を変更する必要があるかについて、正しい方向を教えてください。

前もって感謝します。

4

2 に答える 2

0

@test.errors.messages次の構造でループすると、2 次元配列になってしまうことに気付きました。

[:key1, ["Your key needs to be different."]] 
[:key2, ["Another exception"]]

これは多次元配列であるため、erb で配列をループするだけで、質問で要求されたとおりに表示する値を取得できました。

<% for i in flash[:error] %>
    <%= i[1].first %><br />
<% end %>

画面に次のように表示されます。

あなたのキーは異なる必要があります。
別の例外。

私はいつでも提案を受け付けていますので、これを処理するためのより良い方法があれば、アドバイスしてください! そうでなければ、これは私にとってはうまくいきます。

于 2013-07-27T02:02:08.287 に答える