2011-02-18 52 views
2

私のアプリケーションの/ users/registration/sign_upにブラウザ(GET)でアクセスすると、ページがレンダリングされます。私は、POSTを経由して同じことを行うと(いずれかのターゲット/ユーザー/登録/ sign_upまたはAjaxで/ wのフォームを提出することによって)私のアプリは、次のエラーが返されます。RailsはGETリクエストを認識しますが、POSTリクエストは認識しません

不明アクション アクション「登録」はできませんでした

devise_for::私が使用した認証のための工夫使用して、私のUserモデルのための工夫ルートを作成してい

がUserControllerのために見つけることがユーザー

このパスをすべき私は期待して工夫/ registrations_controllerへのルートそれは新しいメソッドを実行するためです(現在はGET要求のために行います)。たぶん、リクエストを理解するのはPOSTリクエストで、自動的にcreateメソッドに向かうが、これは問題ではないと思う。なぜなら私はcreateメソッドでデバッガを最初に起動し、受け取る前にデバッガがターミナルから起動していないからだ。このエラー。

何が起こっているのかを解読する経験がある人はいますか?必要に応じてより多くの情報を提供しています。ありがとう。

+0

あなたのルートで単に 'resources:users'を使うのではなく、URIは'/users/new'ですか? –

答えて

4

工夫を使用すると、端末からrake routesを実行することで見ることができ、あなたのRailsのアプリへのルートを追加します。

 new_user_session GET /users/sign_in(.:format) 
      user_session POST /users/sign_in(.:format) 
    destroy_user_session GET /users/sign_out(.:format) 
     user_password POST /users/password(.:format) 
    new_user_password GET /users/password/new(.:format) 
    edit_user_password GET /users/password/edit(.:format) 
         PUT /users/password(.:format) 
    user_registration POST /users(.:format) 
new_user_registration GET /users/sign_up(.:format) 
edit_user_registration GET /users/edit(.:format) 
         PUT /users(.:format) 
         DELETE /users(.:format) 
        root  /(.:format) 

そして、あなたが発見したとして、GET /users/sign_upしかし、誰POST /users/sign_upあります。 Deviseを作成するときはPOST /usersが必要です。そのためにヘルパーメソッドuser_registration_pathを使用できます。これはDevise::RegistrationsController#createによって処理されます。

+0

これは私の質問に答えます。ありがとうございました!特定のルートを追加する方法はありますか?私は現在それを持っていないが、追加したいと思う:POST/users/registration?また、。:形式はどういう意味ですか? – user531065

+0

'投稿 'users/registration''はUsersController#registrationへのルートです。 '.format'は要求されたフォーマット(HTTP、XML、JSONなど)を参照します。これについては、Rails Routing Guide:http://guides.rubyonrails.org/routing.html – zetetic

+0

で説明しています。 – user531065

関連する問題