编辑不使用编辑动作的用户列
问题描述:
使用Rails 3.1和authlogic。我有一个用户模型,我想在其中将表单分成几个部分,以便我不混合配置文件,帐户设置和更改一种形式的密码。这些列全部在同一个表中。编辑不使用编辑动作的用户列
问题在于,无论何时该操作未通过验证,我只能返回闪烁错误消息。我想使用正常的错误信息嵌入到相同的操作中,但由于我使用的是redirect_to :back
,因此我无法存储任何错误消息。
我应该怎么做才能以本地方式使用Rails错误消息?
这里是我的代码:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
flash[:notice] = "Welcome!"
redirect_back_or_default account_url
else
render :action => :new
end
end
def show
@user = @current_user
@header_title = 'Account settings'
end
def edit
@user = @current_user
end
def update
@user = @current_user # makes our views "cleaner" and more consistent
if @user.update_attributes(params[:user])
flash[:notice] = "Account settings updated."
redirect_to :back
else
flash[:error] = "Errors found. Please check again."
redirect_to :back
end
end
def password
@user = @current_user
end
end
答
由于错误信息被存储在实例变量,以及这些实例变量不会被周围的GET请求重定向后,用户的浏览器会让你应该改为呈现您希望从更新操作中将其带回的模板。
由于您有可能需要更新的不同部分,因此您可以检查更新操作中的引用者以决定要呈现哪个模板。
或者(也许更干净地),您可以为这些不同的部分创建新的资源。对名字的思考可能很困难,但是这可以让你分离关注点并可能编写更少的代码。