Rails 5.1 脚手架创建方法 returns 状态 200 失败
Rails 5.1 scaffolded create method returns status 200 on failure
在为控制器使用 rails 5.1.4 脚手架时,我看到在 #create
方法中处理保存失败的默认方法是再次呈现 #new
(使用状态 200
).
respond_to do |format|
if @company.save
format.html { redirect_to @company, notice: 'Company was successfully created.' }
format.json { render :show, status: :created, location: @company }
else
format.html { render :new }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
HTML 响应不像 JSON 版本那样呈现 422
有什么充分的理由吗?
这是一个问题的原因是它使得在集成测试中测试响应代码变得困难(即验证错误与否 #create
方法将 return 200
) .
最有可能的原因是,从历史上看,大多数浏览器并不倾向于理解很多 HTTP 代码——它们只处理一些非常简单的代码。我认为他们大多只是丢弃他们不理解的。
但是您没有理由不更改创建以发送最合适的 HTTP 响应代码并开始使 Web 成为一个更好的地方,一次一个网站:)
在为控制器使用 rails 5.1.4 脚手架时,我看到在 #create
方法中处理保存失败的默认方法是再次呈现 #new
(使用状态 200
).
respond_to do |format|
if @company.save
format.html { redirect_to @company, notice: 'Company was successfully created.' }
format.json { render :show, status: :created, location: @company }
else
format.html { render :new }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
HTML 响应不像 JSON 版本那样呈现 422
有什么充分的理由吗?
这是一个问题的原因是它使得在集成测试中测试响应代码变得困难(即验证错误与否 #create
方法将 return 200
) .
最有可能的原因是,从历史上看,大多数浏览器并不倾向于理解很多 HTTP 代码——它们只处理一些非常简单的代码。我认为他们大多只是丢弃他们不理解的。
但是您没有理由不更改创建以发送最合适的 HTTP 响应代码并开始使 Web 成为一个更好的地方,一次一个网站:)