"在表单上呈现新内容"错误不会更改 URL



我的 Rails 应用程序中有一个表单,其中包含一个非常简单的控制器,如果表单无法保存,我想渲染:new以显示错误:

def create
@health_profile = HealthProfile.new(health_profile_params)
if @health_profile.save
redirect_to :somewhere_else
else
render :new
end
end

这很好用,但是在尝试创建记录后,URL 会从/health_profiles/new转到/health_profiles。 有没有办法调用render :new并让 URL 反映用户处于/health_profiles/new? 如果他们要在 URL 显示/health_profiles时刷新页面,它将加载:index这不是我想要的。

不是真的。 您基本上有三种选择:

  1. 您可以在重新呈现新视图后使用 JS 更改 URL。

  2. 您可以将render更改为redirect_to但您将丢失@health_profile中的错误,因此您必须依靠flash来显示错误。

  3. 您可以更改所有路由,以便可以 POST/PUT 到new路由,并在new操作中放置一些条件逻辑,以便根据request.method进行分支

因为您正在提交表单(提交表单的"操作"属性中的URL)。这是正常的。请勿更改网址。

最新更新