1
我想爲用戶提供單獨的頁面/對話框來編輯他們自己的信息。但是,信息保存在單個模型(稱爲用戶)中。現在我試圖找到處理partials更新調用的最佳方法。目前我的代碼:如何分別處理單個用戶模型數據的更新:用戶信息,密碼,額外信息
def edit
render :layout=>!request.xhr?
end
def edit_password
render :layout=>!request.xhr?
end
def edit_extra
unless @user.extra
@user.build_extra
@user.extra.value = 2047
end
render :layout=>!request.xhr?
end
def update
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, :notice => 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render :action => "edit", :layout=>!request.xhr? }
end
end
end
事情是,所有形式的方法(編輯edit_password和edit_extra)調用Update方法。但是,有兩個問題:
- 如果數據解析未驗證,用戶會看到「編輯」窗體,這是不正確的。
- 我想對額外的數據進行密碼確認。用戶不應該能夠編輯該信息,除非他們提供了正確的密碼。
我想製作更多的通用解決方案,而不僅僅是重複更新代碼。最大的問題是根據當前操作呈現正確的佈局(edit,edit_password)。