我的思绪正在变慢......这是一个简单的问题......我知道。请原谅我的无知......
我想将经过身份验证的用户定向到该用户个人资料页面。
注意:我正在使用Devise。
注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第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'更好的错误'(在这里找到这个宝石)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
答案 0 :(得分:4)
除了您的其他个人资料之外,您还想要Singular Resource。以下是在Devise中的作品:
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
答案 1 :(得分:0)
以下是答案:
def after_sign_in_path_for(resource)
profile_path(resource.profile)
end