1

我的思绪变慢了……这是一个简单的问题……我知道。请原谅我这里的菜鸟...

我想将经过身份验证的用户定向到该用户的个人资料页面。

注意:我正在使用设计。

注 2:您可以在此处查看整个 routes.rb 文件....pastie.org/6142383

当我做“耙路线”时,我把它作为路线信息......

profile GET        /profiles/:id(.:format)                       profiles#show

所以在我的 routes.rb 文件中我试过这个......

authenticated :user do
  root :to => 'profiles#show'
end

但我收到一个错误“app/controllers/profiles_controller.rb line 17”,这是……

@profile = Profile.find(params[:id])

所以我需要以某种方式在我的 routes.rb 中指出 params[:id] 但我对如何......

authenticated :user do
  root :to => '?'  # how to land user on www.website.com/profile/1
end 

感谢您的时间...

更新:

我正在使用 gem '更好的错误'(在这里了解这个 gem)http://selfless-singleton.rickwinfrey.com/2012/12/13/better-errors/错误读取....

ActiveRecord::RecordNotFound at /
Couldn't find Profile without an ID

ProfileControllers#show
app/controllers/profiles_controller.rb, line 17

然后告诉我确切的线......

12   end
13 
14   # GET /profiles/1
15   # GET /profiles/1.json
16   def show
17     @profile = Profile.find(params[:id])
18 
19     respond_to do |format|
20       format.html # show.html.erb
21       format.json { render json: @profile }
22     end
4

2 回答 2

4

听起来您除了其他配置文件之外还想要一个单一资源。以下在设计中起作用:

resources :users

authenticate(:user) do
  get '/profile', to: 'users#show'
end

然后在你的users_controller.rb

def show
  if params[:id]
      @user = User.find(params[:id])
  else
    # Show the currently logged in user
    @user = current_user
  end
  ....
end

要在成功登录后自定义用户登陆的位置,请在您的ApplicationController

def after_sign_in_path_for(resource)
 current_user_path
end

其他有用的指南:https ://github.com/plataformatec/devise/wiki/_pages

于 2013-02-12T20:43:55.643 回答
0

这是答案:

def after_sign_in_path_for(resource)
  profile_path(resource.profile)
end
于 2013-02-12T23:00:07.173 回答