带有错误的表单提交会在与原始表单不同的URL处显示表单+错误

时间:2009-08-29 22:06:13

标签: ruby-on-rails url-routing

我正在使用(目前)单一资源的相对简单的网站。我在GET /maps/new处有一个表单,用于将新地图的数据提交到POST /maps,完成后会重定向到GET /maps/:id。这里的问题是,如果验证失败,它会呈现新地图表单,因此URL仍为/maps。但重定向到/maps/new会丢失验证错误(以及先前输入的地图数据)。

这是我第一个真正基于Rails的网站,所以我确信这可能是我缺少的基本内容。以下是我的newcreate操作,与生成的脚手架几乎没有任何不同:

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上,还能保留中间表单数据和错误?

1 个答案:

答案 0 :(得分:0)

这对你有用吗?

def new
  @map = flash[:map] || Map.new

...

 else
   flash[:map] = @map
   format.html { redirect_to new_map_url }