很遗憾,在学习rails一个月后才在一个blog平台上写上学习的得失体验,决定以后每天一篇日记。
今天的收获是了解了render和redirect to的用法:
看user控制器创建新用户的代码:
def create
@user = User.new(user_params)
if @user.save
flash[:notice] = 'Created user successfully!'
sign_in @user
redirect_to user_path(@user)
else
render :new
end
end
if @user.save创建用户成功后,使用redirect_to跳转到show这个action,那么即使用户重复刷新注册页面,用户只会跳出当前注册页面并提交一次注册信息(redirect_to会向服务器发出请求),而render则会因为没有向服务器发起请求而保存上一次保存提交的信息并且导致重复提交相同的信息到服务器。
render :new创建用户失败后,使用render加载new模板,会因为没有向服务器发起请求而保存上一次保存提交的信息,用户就不会因为注册失败而丢失上次提交的信息,所以用户可以重新编辑信息而不需要重新从头填写。
网友评论