我正在使用(目前)单一资源的相对简单的网站。我在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
如何让表格中的网址保留在/maps/new
上,还能保留中间表单数据和错误?
答案 0 :(得分:0)
这对你有用吗?
def new
@map = flash[:map] || Map.new
...
else
flash[:map] = @map
format.html { redirect_to new_map_url }