我的 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
这不是我想要的。
不是真的。 您基本上有三种选择:
-
您可以在重新呈现新视图后使用 JS 更改 URL。
-
您可以将
render
更改为redirect_to
但您将丢失@health_profile
中的错误,因此您必须依靠flash
来显示错误。 -
您可以更改所有路由,以便可以 POST/PUT 到
new
路由,并在new
操作中放置一些条件逻辑,以便根据request.method
进行分支
因为您正在提交表单(提交表单的"操作"属性中的URL)。这是正常的。请勿更改网址。