2011-08-02 6 views
1

の検証エラーがここに私のフォームの表示されません。コメントの検証:validates :text, :length => { :minimum => 5 }simple_formは、ある特定のフォーム

コメントコントローラ:

def create 
    @post = Post.find params[:game_id] 
    comment = @post.comments.build :user_id => current_user, :text => params[:comment][:text] 

    comment.save 
    redirect_to @post 
end 

フォーム自体は正常に動作します。 5文字以上入力すると、コメントが作成されます。しかしそれが少ない場合は、posts#showにリダイレクトされ、フォームに検証エラーはありません(ソースを確認しました)。

私もdevise登録フォームに記入してみましたが、失敗した場合はエラーが表示されます。

問題はリダイレクトによって発生していると思います。しかし、とにかく、私はそれを修正する方法を知らない。

答えて

5

ユーザーをリダイレクトすると、アプリケーションが何らかの形でそれらを覚えていない限り、エラーは失われます。この問題を解決するための二つの可能性があります。

  1. は、ユーザーをリダイレクトするが、ちょうどエラーメッセージでビューを表示するためにrenderを使用しないでください。それはDeviseのやり方です。

  2. ユーザーをリダイレクトしますが、エラーメッセージに沿って何とか転送します。これを行うには、単純な文字列として、またはシリアル化された形式でフラッシュに保存するなど、さまざまな方法があります。しかし、これは通常より複雑であり、リダイレクトが必要な場合にのみ行うべきです。

+1

ありがとうございました。私は第二の選択肢に固執しなければならなかった。ここで私は最終的に行くつもりです:http://stackoverflow.com/questions/5512875/how-can-i-pass-validation-error-messages-to-a-method-in-a-different-controller – bassneck

関連する問題