我在account_settings
控制器中有一个表单,通过user
更新users_controller
对象。错误消息未通过。这是一个代码。
ACCOUNT_SETTINGS / account.html.haml
= form_for @user, :url => { :controller => "users", :action => "update", :id => @user.id } do |f|
- if @user.errors.any?
.alert.alert-error
%h4
Please address the following errors:
%ul
- @user.errors.full_messages.each do |msg|
%li= msg
form stuff...
account_settings_controller
def account
@user = current_user
end
users_controller
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:notice] = "User was successfully updated."
end
redirect_to :back
end
表单不会更新,但没有错误消息被传回。有什么想法吗?
答案 0 :(得分:1)
这是因为您正在返回重定向。 @user
对象不会在重定向中保留。你应该做的事情如下:
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:notice] = "User was successfully updated."
redirect_to :back
else
render :edit
end
end
在此,我们在更新成功时重定向,但如果没有,我们会呈现edit
操作。因此,我们可以访问@user
,您的错误将出现在@user.errors