当我检查我的错误消息是否正常工作时,我发现我的重定向在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
答案 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,如果真的需要,你可以纠正它。