使用Rails 3.1和authlogic。我有一个用户模型,我想将表单分成几个部分,这样我就不会混合配置文件,帐户设置,更改一个表单中的密码。这些列都在同一个表中。
问题在于,只要它没有通过任何一个动作的验证,我只能返回一个flash错误消息。我想将正常的错误消息嵌入到同一个操作中,但因为我使用的是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
答案 0 :(得分:0)
因为错误消息存储在实例变量中,并且那些实例变量不会出现用户浏览器在重定向后进行的GET请求,所以您应该渲染您希望从更新中取回的模板动作。
由于您有可能PUT更新的不同部分,您可以在更新操作中检查引用程序,以决定要呈现的模板。
或者(也许更干净),您可以为这些不同的部分创建新资源。对名称的思考可能很困难,但这样可以让您分离问题,并可能编写更少的代码。