设计会从网址中隐藏用户ID

时间:2014-12-09 00:57:13

标签: ruby-on-rails devise

在设计中编辑用户时,edit_user_registration_path路由为:

edit_user_registration GET    /users/edit(.:format)                                  devise/registrations#edit

我想有一条路线来编辑用户的个人资料而不会在网址中透露user_id,但我的路线是:

edit_profile GET    /profiles/:id/edit(.:format)                           profiles#edit

如何创建类似路线并从网址隐藏user_id?

修改

好的,我用过这个...部分使用: http://guides.rubyonrails.org/routing.html#singular-resources

我在routes.rb文件中创建了一个奇异的资源

resource :profile

现在,我可以使用/ profile查看当前用户的个人资料,并使用/ profile / edit

编辑当前用户的个人资料

但是,当我编辑当前用户的个人资料并点击更新时,我被重定向到/profile.1? /profile.2 /profile.3等等都显示当前用户的个人资料。

profile.X来自哪里,如何在更新后简单地重定向回/ profile?

我的更新操作很简单:

def update
  @profile.region = set_region(params[:postal_code], params[:country])
  @profile.assign_attributes(profile_params)
  @profile.save
  @profile.user.update_attributes (user_params)
  respond_with(@profile)
end

1 个答案:

答案 0 :(得分:0)

你的问题是

  

profile.X来自哪里,我如何简单地重定向回来   更新后的/ profile?

运行以下命令

$ rake routes | grep profile
     profile POST   /profile(.:format)         profiles#create
 new_profile GET    /profile/new(.:format)     profiles#new
edit_profile GET    /profile/edit(.:format)    profiles#edit
             GET    /profile(.:format)         profiles#show
             PATCH  /profile(.:format)         profiles#update
             PUT    /profile(.:format)         profiles#update
             DELETE /profile(.:format)         profiles#destroy

如您所见,profile_path没有收到任何参数。传递给profile_path的参数将被解释为format。您可以在Rails控制台中尝试以下操作

> app.profile_path
 => "/profile" 
> app.profile_path(1)
 => "/profile.1" 
> app.profile_path("json")
 => "/profile.json"