在设计中编辑用户时,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
答案 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"