2011-10-07 12 views
4

jqueryを使用して、deviseのサインアップフォームをポップアップとして読み込みます。問題は、私はポップアップでdeviseのエラーメッセージを読み込むことができないことです。ポップアップでdeviseエラーメッセージを取得するには

空のサインアップフォームをクリックすると、エラーメッセージが表示された別のページにリダイレクトされます。

私はdeviseのgithub投稿を通過しましたが、私が探している解決策を見つけることができませんでした。

フォームヘルパーの<%= devise_error_messages! %>コードが正しく機能するように、アプリケーションヘルパーでメソッドを作成しました。次のように

アプリケーションヘルパーコードは次のとおりです。 -

def devise_error_messages! 
    resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join 
    end 

私は何かがこれで間違っていることを知っているが、何を把握することはできません。誰もこの1つで私を助けてもらえますか?

UPDATE

私は送信ボタンを打ったときにエラーがポップアップでボックスを示していないので、登録コントローラのcreateアクションに問題があるかもしれないと思います。 deviseの登録コントローラのデフォルトの作成アクションを無効にしようとします。これらの変更に対応しているかどうかを確認できます。

UPDATE 2

は、それは私が解決策に非常に近い午前フィーラを与える動作していないにもかかわらず:)

それでもいくつかの助けを待って、私は上記のアップデートで述べた変更を行いました。

ありがとう、

答えて

3

RegistrationsControllerの作成アクションをオーバーライドしていますか?これは、resource.saveが失敗した場合に役立ちます。

render :json => { :success => false, :data => resource.errors.full_messages } 

これはエラーメッセージだけをjqueryスクリプトに渡す必要があります。例:

$('#sign_up_form').submit(function() { 
    $.post(this.action, function(response) { 
     if (response.success) { 
      //... do a redirect or something cuz we're now registered 
     } else { 
      // do something with your errors 
      $('#sign_up_form').prepend(response.data); 
     } 
    }, 'json'); 
}); 
+0

ありがとう –

関連する問題