【问题标题】:Rails create action is redirecting to index when it should be rendering the new actionRails 创建操作在应该呈现新操作时重定向到索引
【发布时间】: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/newlocalhost:3000/users,但它实际上显示的是新用户页面。即使我查看页面源,它​​也会显示索引源......这真的很奇怪。是的,我已经将它重定向到现在显示,谢谢。
  • 我也有同样的问题。你想通了吗?就我而言,重定向是错误的方式,因为我需要保留用户输入的数据并显示错误,他可以修复
  • 我认为你最终在 /users 而不是 /users/new 的原因是实际请求是 POST /users。由于 'render :new' 它呈现 :new 视图

标签: ruby-on-rails rest routing


【解决方案1】:

我想你想说

redirect_to :action => 'new'

【讨论】:

  • 不一定。他们可能希望使用用户提供的值重新呈现表单。 render :new 在这里应该没问题。
  • 是的,重定向有效,但它不显示错误或任何内容。
猜你喜欢
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
相关资源
最近更新 更多