0

私はレールに不慣れで、これは私の最初のアプリです。現在、認証にrails 3.2.11を使用し、2.2.3を考案しています。

問題は、サインインした後、アプリケーションが404を返し、「users」コントローラーと「show」アクションのルートを見つけることができなかったことを示しています。

静的ページ用のホームコントローラーとユーザー用のユーザーコントローラーがあります。railsgenerateコマンドを使用してユーザーモデルを生成しました。私のconfig/routes.rbは以下の通りです。

devise_for :users
resources  :users
root :to => 'home#index'

2013-01-2915:44:25+0530に127.0.0.1のPOST"/users /sign_in"を開始しました。Devise::SessionsController#createによるHTMLパラメーターとしての処理:{"utf8" => "✓"、 "authenticity_token" => "cHXjNbgzEx2YsHX / AMb1oxjStY75IVHc9wT40NUOdJM ="、 "user" => {"email" => "r@e.com"、 "password" => "[FILTERED]"、 "remember_me" => "0"}、 " commit "=>" Sign in "} User Load(0.4ms)SELECT"users"。*FROM" users"WHERE"users"。"email"='r@e.com' LIMIT 1(0.1ms)begin transaction( 0.5ms)UPDATE "users" SET "last_sign_in_at" = '2013-01-29 10:06:46.145781'、 "current_sign_in_at" = '2013-01-29 10:14:26.063767'、"sign_in_count" = 66、 "updated_at" = '2013-01-29 10:14:26.067024'WHERE"users"。"id"= 1(188.0ms)コミットトランザクションが完了しました404365msで見つかりません

ActionController::RoutingError (No route matches {:action=>"show", :controller=>"users"}): app/controllers/application_controller.rb:5:in `after_sign_in_path_for'

そして、私は以下のようにアプリケーションコントローラを変更しました

def after_sign_in_path_for(resource)
  user_url(resource)
end

私がやろうとしているのは、ユーザーがログインしたら、ユーザー固有の情報を表示したいということです。そのために、after_sign_in_path_for()を変更しました。希望する結果を得る方法についてのヒントはありますか?

私のレーキルートの出力は以下のとおりです

        new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
            user_session POST   /users/sign_in(.:format)       devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
           user_password POST   /users/password(.:format)      devise/passwords#create
       new_user_password GET    /users/password/new(.:format)  devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                         PUT    /users/password(.:format)      devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)        devise/registrations#cancel
       user_registration POST   /users(.:format)               devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)          devise/registrations#edit
                         PUT    /users(.:format)               devise/registrations#update
                         DELETE /users(.:format)               devise/registrations#destroy
                   users GET    /users(.:format)               users#index
                         POST   /users(.:format)               users#create
                new_user GET    /users/new(.:format)           users#new
               edit_user GET    /users/:id/edit(.:format)      users#edit
                    user GET    /users/:id(.:format)           users#show
                         PUT    /users/:id(.:format)           users#update
                         DELETE /users/:id(.:format)           users#destroy
                    root        /                              home#index
4

1 に答える 1

1

あなたはあなたに必要ですapplication_controller.rb

 def after_sign_in_path_for(resource)
   user_url(current_user)
  end

https://github.com/plataformatec/devise/wiki/How-to%3A-redirect-to-a-specific-page-on-successful-sign-in-and-sign-outをご覧ください

レール/デバイスのクリーンなインストールと適切な動作で試してみてください。users_controller.rbリダイレクトが必要なため、正しく機能しないと思います。コントローラにあるフィルタまたはリダイレクトを削除して、そのコードをテストしてください

ショットを!

よろしく!

于 2013-01-29T11:09:53.683 に答える