创建操作重定向到错误的页面?

时间:2012-05-27 16:03:56

标签: ruby-on-rails ruby ruby-on-rails-3

当我检查我的错误消息是否正常工作时,我发现我的重定向在POST(/businesses操作)后转到/businesses/new而不是create。我正在使用常规RESTFUL路由,但我需要它在POST时返回/businesses/new,这是错误的。我怎么能这样做?


这是我目前的代码:

def create
  @business = Business.new(params[:business])
   if @business.save
    redirect_to :back, :notice => "You have successfully added a new business."
   else
    render :action => 'new', :notice => "Please try again."
  end
end

2 个答案:

答案 0 :(得分:1)

如果验证失败,则不应重定向。这是我应该做的就是保持同一页面。

def create
  @business = Business.new(params[:business])
  if @business.save
    redirect_to businesses_path
  else
    render :new
  end
end

答案 1 :(得分:1)

实际上它不是重定向。如果你为表单生成的html代码,你会看到如下内容:

<form accept-charset="UTF-8" action="/business" 
      class="new_business" id="new_business" method="post">

这意味着要加载的请求页面不是“/ business / create”而是“/ business”。这就是你在浏览器的地址栏中看到它的原因。这与create action中的重定向无关。在那里你只需渲染上一个表格。这不是一个错误,它实际上是有效的,可能有点令人困惑,但我认为这不是一个问题。使用一些javascript,如果真的需要,你可以纠正它。