1

设计2真的很棒!但是,我一直在努力让它在登录后重定向到 users/:id。

用户成功登录站点后,默认页面为 root。但是,我希望它转到由 users_controller.rb 控制的 users/:id 页面。登录后,我可以手动输入 localhost:3000/users/1 进入用户个人资料页面,在那里我可以访问用户信息,因此显示控制器工作正常。

关键问题是如何让网站在用户 1 登录后转到 localhost:3000/users/1。

我多次阅读设计维基并搜索了很多。最简单的方法是通过添加 application_controller.rb 来覆盖设计:

def after_sign_in_path_for(resource)
  dashboard_path
end

我想我的问题是如何定义dashboard_path?我在 config/routes.rb 和 application_controller.rb 中添加什么?

任何帮助是极大的赞赏!我正在使用设计 2.0 和 rails 3.2.3

4

1 回答 1

4

首先看这个链接

我告诉你我在做什么
routes.rb

  devise_for :users,:has_many => :comments, :controllers => {:sessions => devise/sessions', :registrations => 'devise/registrations'} do       

       match '/users/:id/dashboard', :to => "users#dashboard", :as => :dashboard      

然后在使用设计关键字
UsersHelper时在 helper.rb 文件中声明以下帮助程序

 def resource_name     
     :user    
 end    

 def resource     
    @resource ||= User.new     
  end     

  def devise_mapping     
    @devise_mapping ||= Devise.mappings[:user]      
  end      

 end              

Application_controller.rb

 def after_sign_in_path_for(resource)    
     if current_user.admin?     
      stored_location_for(resource) || admin_path     
    else       
       stored_location_for(resource) || dashboard_path(current_user.id)      
     end       
  end       

我希望这会对你有所帮助。
谢谢。

于 2012-04-21T07:13:08.947 回答