0

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


这是我当前的代码:

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
4

2 回答 2

1

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

def create
  @business = Business.new(params[:business])
  if @business.save
    redirect_to businesses_path
  else
    render :new
  end
end
于 2012-05-27T17:14:26.900 回答
1

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

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

这意味着要加载的请求页面不是“/business/create”,而是“/business”。这就是您在浏览器的地址栏中看到它的原因。这与您在创建操作中的重定向无关。在那里你只是呈现以前的形式。这不是一个错误,它实际上是有效的,可能有点令人困惑,但我认为这不是什么大问题。如果确实需要,您可以使用一些 javascript 进行更正。

于 2012-05-27T22:52:40.577 回答