当我在我的数据库中创建用户时,它还会创建一个唯一标识符字符串。
在我的路线中,我有:
match '/users/:unique_identifer', :to => 'users#show'
这部分工作正常。当我转到 /users/xyz 时,它会将我带到适当用户的显示操作。
但是,当我尝试更新用户记录时,它会将我重定向回 /users/SOMENUMBER,其中 SOMENUMBER 是用户的 ID。这会导致错误,因为控制器中的 show 操作具有:
def show
@user = User.find_by_unique_identifier(params[:unique_identifer])
end
换句话说,show 操作现在只通过唯一标识符而不是用户 ID 来查找用户。
更新动作如下:
def update
@user = User.find_by_unique_identifier(params[:unique_identifer])
if @user == current_user && @user.update_attributes(params[:user])
redirect_to @user
else
redirect_to @user
end
end
如何获取更新操作以重定向到用户的显示操作,但使用适当的链接 (/users/unique_identifier) 而不是 /users/ID?