我有以下更新用户个人资料。基本网址(http://domain_name.com/users/)完全没问题。
def update
@user = User.find(params[:id])
respond_with @user do |format|
if @user.update_attributes(params[:user])
if current_user.becomes(User) == @user
sign_in(@user, :bypass => true)
end
flash[:notice] = 'User was successfully updated.'
format.html { redirect_to @user }
format.json { render :status => :ok }
else
format.html { render :action => 'edit' }
format.json { render :status => :bad_request }
end
end
end
现在我想把它移到admin命名空间(http://domain_name.com/admin/users/)。我尝试的是改变
redirect_to @user
到
redirect_to admin_user_path(@user)
然后我得到了:
def update
@user = User.find(params[:id])
#respond_with(@user) do |format|
respond_with(@user, :location => admin_user_path(@user)) do |format|
if @user.update_attributes(params[:user])
if current_user.becomes(User) == @user
sign_in(@user, :bypass => true)
end
flash[:notice] = 'User was successfully updated.'
format.html { redirect_to admin_user_path(@user) }
format.json { render :status => :ok }
else
format.html { render :action => 'edit', :location => edit_admin_path(user) }
format.json { render :status => :bad_request }
end
end
end
但它不起作用。我也试着改变
respond_with(@user) do |format|
类似
respond_with(@user, :location => admin_user_path(@user)) do |format|
但它也不起作用。任何人都可以有一些经验,请给我一些建议或解释。
谢谢!
答案 0 :(得分:0)
我确实相信以下几行:
respond_with(@user, :location => admin_user_path(@user)) do |format|
对我来说似乎有点奇怪。我原以为这应该是respond_with(@user) do |format|
另请阅读以下内容:Ryan's Scraps - Cleaner RESTful Controllers / respond_with。 Ryan在行动前重写:
下声明了以下内容还可以通过传入一个块来响应标准资源处理,以响应为该操作指定要覆盖的格式。
通过此,您将看到要覆盖的格式使用respond_to