Ruby on rails 使用Rails中的restful_身份验证插件更新用户信息?
我想让用户能够使用rails中的restful_认证插件更改他们的帐户信息 我将这两种方法添加到我的用户控制器:Ruby on rails 使用Rails中的restful_身份验证插件更新用户信息?,ruby-on-rails,rest,ruby-on-rails-plugins,restful-authentication,Ruby On Rails,Rest,Ruby On Rails Plugins,Restful Authentication,我想让用户能够使用rails中的restful_认证插件更改他们的帐户信息 我将这两种方法添加到我的用户控制器: def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) # Only update password when necessary params[:user].delete(:password) if para
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
# Only update password when necessary
params[:user].delete(:password) if params[:user][:password].blank?
respond_to do |format|
if @user.update_attributes(params[:user])
flash[:notice] = 'User was successfully updated.'
format.html { redirect_to(@user) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
另外,我将new.html.erb复制到edit.html.erb。考虑到routes.rb中已经定义了资源,我希望它可以轻松工作,但不知何故,当我单击save按钮时,它调用了create方法,而不是update,使用POST HTTP请求。
紧接着,它会自动从会话中注销
有什么想法吗?是否可能在您的
编辑方法中找不到所选用户?
然后,@user
为空,您的表单认为您正在创建一个新用户
尝试在edit
方法中添加调试输出,如下所示:
def edit
@user = User.find(params[:id])
logger.debug "Found user = #{@user.inspect}"
end
并检查您的日志消息是否显示找到了用户。如果您显示了edit.html.erb
,可能会有助于了解发生了什么。