【发布时间】:2011-04-25 15:46:02
【问题描述】:
如果我提交有错误的新用户表单,它会重定向到索引页面,然后在其顶部呈现新页面。在控制器中,我指定它应该只呈现新操作,以便用户可以查看/修复他们的错误并重新提交。我有什么明显的遗漏吗?
这是我的控制器代码中的创建操作:
def create
@user = User.new(params[:user])
@user.role = "owner"
if @user.save
flash[:notice] = "Registration successful!"
else
flash.now[:notice] = "You have errors!"
render :new
end
end
【问题讨论】:
-
不确定“重定向到索引页面然后在其顶部呈现新页面”是什么意思。那是不可能的。它要么呈现新的,要么重定向到索引。您的控制器上是否有任何可能干扰的过滤器?此外,如果@user.save,您可能希望从内部为新用户重定向到:show。否则 Rails 将尝试渲染一个你可能没有的“创建”视图。
-
地址从localhost:3000/users/new 到localhost:3000/users,但它实际上显示的是新用户页面。即使我查看页面源,它也会显示索引源......这真的很奇怪。是的,我已经将它重定向到现在显示,谢谢。
-
我也有同样的问题。你想通了吗?就我而言,重定向是错误的方式,因为我需要保留用户输入的数据并显示错误,他可以修复
-
我认为你最终在 /users 而不是 /users/new 的原因是实际请求是 POST /users。由于 'render :new' 它呈现 :new 视图
标签: ruby-on-rails rest routing