我想让用户能够使用 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 中定义,我希望它可以轻松工作,但不知何故,当我单击保存按钮时,它调用create方法,而不是update,使用POST HTTP request。之后,它会立即自动从会话中注销。
有任何想法吗?