设计自定义用户root无法正常工作

时间:2013-06-15 18:16:03

标签: ruby-on-rails-3 devise rails-routing

用户登录后,我希望将它们重定向到/ users / 2或users / 44,就像普通资源一样。 (这样管理员只需知道他们的身份就可以轻松查看任何用户的个人资料页面。)

我不知道我的路线文件中发生了什么。当用户登录时,我可以在日志中看到它正确进行身份验证,并且我的application_controller after_sign_in_path_for被调用。

但是当我尝试redirect_to user_path(current_user)时,这是我得到的错误。

No route matches {:action=>"show", :controller=>"users", :user_id=>11}

我的config/routes.rb

  devise_for :users, :path_names => {:sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' }

  devise_scope :user do
    get "signin", :to => "devise/sessions#new"
    get "signout", :to => "devise/sessions#destroy", via: :delete
    get "signup", :to => "devise/registrations#new"
  end

  resources :users do
    member do
      get 'settings', to: 'users#edit'
    end
  end

我的application_controller.rb

class ApplicationController < ActionController::Base
  ...

  def after_sign_in_path_for(resource)
    redirect_to user_path(:user_id=>current_user.id)
  end
end

resource :users块是否应该负责创建用户显示路径?我的users_controller.rb中有一个show方法。请帮助,我一直试图让它工作2天。

1 个答案:

答案 0 :(得分:0)

我的问题是我在{_ 1}中使用了after_sign_in_path(resource)方法,而不是只返回路径:

redirect

是执行此操作的正确方法。