Rails路由依赖于当前用户

Low*_*ain 5 routes ruby-on-rails

我想创建一个rails路由来编辑用户的个人资料.

而不是必须使用/ users /:id/edit,我想要一个像/ edit_profile的网址

是否有可能创建一个动态路由,将/ edit_profile转换为/ users/{user's id}/edit,或者我应该在控制器中做什么?

Tom*_*kas 4

您可能想为此任务创建一个单独的控制器,但您也可以继续使用users_controller并仅检查是否有一个params[:id]集合:

def edit
  if params[:id]
    @user = User.find(params[:id])
  else
    @user = current_user
  end
end
Run Code Online (Sandbox Code Playgroud)

但您应该注意,/users通常会路由到操作,但如果您仍然有该路由index,则不会。但你可以为此设置一条不同的单一路径:showmap.resources :users

map.resources :users
map.resource :profile, :controller => "users"
Run Code Online (Sandbox Code Playgroud)

这种方式/users将列出所有用户,/users/:id将显示任何用户,并将/profile显示show当前登录的用户页面。要编辑您自己的个人资料,您可以调用“/profile/edit”。