0

我是 Rails 新手,这是我的第一个应用程序。当前使用 rails 3.2.11 并设计 2.2.3 进行身份验证。

问题是登录后,应用程序返回 404 并说它无法找到“用户”控制器和“显示”操作的路由。

我有一个用于静态页面的主控制器和一个用于用户的用户控制器。我已经使用 rails generate 命令生成了用户模型。我的 config/routes.rb 如下。

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

在 2013-01-29 15:44:25 +0530 开始 POST "/users/sign_in" for 127.0.0.1 由 Devise::SessionsController#create as HTML 参数处理:{"utf8"=>"✓", "authenticity_token" =>"cHXjNbgzEx2YsHX/AMb1oxjStY75IVHc9wT40NUOdJM=", "user"=>{"email"=>"r@e.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, " commit"=>"Sign in"} 用户负载 (0.4ms) SELECT "users".* FROM "users" WHERE "users"."email" = 'r@e.com' LIMIT 1 (0.1ms) 开始交易 ( 0.5ms)更新“用户”设置“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) commit transaction Completed 404 Not Found in 365ms

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()。关于如何获得所需结果的任何提示?

我的 rake 路线输出如下

        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 回答