我想让用户能够使用rails中的restful_authentication插件更改其帐户信息。
我将这两种方法添加到用户控制器中:
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中已经定义了资源我希望它能够轻松工作,但是当我点击保存按钮时它会调用创建方法,而不是更新,使用 POST HTTP请求。 在此之后,它会立即从会话中自动注销。
有什么想法吗?
答案 0 :(得分:1)
是否可能无法在edit
方法中找到所选用户?
然后@user
为空,您的表单认为您正在创建新用户。
尝试在edit
方法中添加调试输出,如下所示:
def edit
@user = User.find(params[:id])
logger.debug "Found user = #{@user.inspect}"
end
并检查您的日志消息是否显示已找到用户。