【发布时间】:2009-08-30 06:51:00
【问题描述】:
我正在开发一个相对简单的网站,(目前)只有一个资源。我在GET /maps/new 有一个表单,它将新地图的数据提交到POST /maps,完成后重定向到GET /maps/:id。这里的问题是,如果验证失败,它会呈现新地图表单,所以 URL 仍然是/maps。但是重定向到/maps/new 会丢失验证错误(以及他们之前输入的地图数据)。
这是我第一个真正的基于 Rails 的网站,所以我确信这可能是我缺少的一些基本内容。这是我的new 和create 操作,它们与生成的脚手架几乎没有变化:
def new
@map = Map.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @map }
end
end
def create
@map = Map.new(params[:map])
respond_to do |format|
if @map.save
flash[:notice] = 'Map was successfully created.'
format.html { redirect_to(@map) }
format.xml { render :xml => @map, :status => :created, :location => @map }
else
format.html { render :action => 'new' }
format.xml { render :xml => @map.errors, :status => :unprocessable_entity }
end
end
end
如何让表单的 URL 保留在 /maps/new 上,同时维护中间表单数据和错误?
【问题讨论】: