繁体   English   中英

Rails设计布线问题

[英]rails devise routing issue

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

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

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

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

在2013年1月29日15:44:25 +0530通过Devise :: SessionsController#create作为HTML参数开始处理127.0.0.1的POST“ / users / sign_in”:{“ utf8” =>“✓”,“ authenticity_token” =>“ cHXjNbgzEx2YsHX / AMb1oxjStY75IVHc9wT40NUOdJM =”,“ user” => {“ email” =>“ r@e.com”,“ password” =>“ [已过滤]”,“ remember_me” =>“ 0”},“ commit“ =>” Signin“}用户负载(0.4ms)选择” users“。* FROM” users“ WHERE” users“。” email“ ='r@e.com'LIMIT 1(0.1ms)开始交易( 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)提交事务在365ms内完成404找不到

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

您需要在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

只需在干净的rails / devise安装上尝试并正常工作即可。 我认为您应该在users_controller.rb进行一些重定向,因此无法正常工作! 请删除控制器中的所有过滤器或重定向并测试该代码

试一把!

问候!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM