gpt4 book ai didi

ruby-on-rails - 在创建错误时,我应该渲染 `new` 还是重定向到 `new` ?

转载 作者:行者123 更新时间:2023-12-03 00:49:57 25 4
gpt4 key购买 nike

假设我有这样的东西:

def new
@user = User.new
end
def create
@user = User.create(params[:user])
if @user.save
flash[:notice] = 'User created'
redirect_to :action => 'list'
else
flash[:error] = 'Some error here!'
render 'new'
end
end

我认为代码很清楚。
这里的问题是,当@user对象没有成功保存时,我应该渲染new(如上所述)还是应该重定向到new

我知道如果重定向到new,用户输入的数据就会丢失,但如果我渲染new,URL将是/users/create 而不是 /users/new (这很丑!)。

最佳答案

您不使用 redirect 是正确的。重定向正在加载全新的资源。

render但是,这将使您的 session 数据保持最新,并且根据表单的设置方式,应该重新填充输入的任何数据。

您提到:

我知道如果重定向到 new 用户输入的数据会丢失,但如果我渲染 new,URL 将是/users/create 而不是/users/new (这很丑!)。

不,这不是真的。如果你说render 'new' ,它将转到 url users/new不创建。创建为操作仅处理 POST向您的 Controller 发出请求,并且通常不会有与之关联的 View 。它将改为引用 new处理任何错误和表单显示的操作。

创建操作与update有共同点通过仅处理 PUT 执行相同操作的操作请求,但指的是 edit处理 View 显示的操作。

关于ruby-on-rails - 在创建错误时,我应该渲染 `new` 还是重定向到 `new` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com