我有一个属于用户的个人资料模型,当我想编辑我的个人资料时,我会重定向到http://localhost:3000/1/profile
而不是http://localhost:3000/profile
为什么?这是我的个人资料resource :profile
这是我的个人资料控制器
before_filter :authenticate_user!
def show
@user = current_user
@profile = @user.profile
end
def update
@user = current_user
@profile = @user.profile
respond_to do |format|
if @profile.update(profile_params)
flash[:notice] = "profile à été mis à jour!"
format.html { redirect_to @profile }
else
format.html { render action: 'edit' }
end
end
end
更新
这是个人资料路线
profile POST (/:locale)/profile(.:format) profiles#create {:locale=>/en|fr/}
new_profile GET (/:locale)/profile/new(.:format) profiles#new {:locale=>/en|fr/}
edit_profile GET (/:locale)/profile/edit(.:format) profiles#edit {:locale=>/en|fr/}
GET (/:locale)/profile(.:format) profiles#show {:locale=>/en|fr/}
PATCH (/:locale)/profile(.:format) profiles#update {:locale=>/en|fr/}
PUT (/:locale)/profile(.:format) profiles#update {:locale=>/en|fr/}
DELETE (/:locale)/profile(.:format) profiles#destroy {:locale=>/en|fr/}
答案 0 :(得分:0)
因为您在更新操作中执行了redirect_to @profile
。这是您将遇到的 Rails Magic 之一。惯例是,只要您在redirect_to
中使用对象,它就会自动将您重定向到对象show
页面。
答案 1 :(得分:0)
您不想重定向到@profile对象,而只需要profile_path(这是您的单一资源路由之一)。 ProfileController中的操作将处理查找current_user的配置文件对象。