2009-08-29 4 views
0

私は比較的単純なウェブサイトで(現在)単一のリソースで作業しています。 GET /maps/newには新しいマップのデータをPOST /mapsに送信するフォームがあり、完了後にGET /maps/:idにリダイレクトされます。ここで問題となるのは、検証に失敗すると新しいマップフォームがレンダリングされるため、URLはまだ/mapsです。しかし、/maps/newにリダイレクトすると、検証エラー(および以前に入力したマップデータ)が失われます。フォーム提出でエラーが発生した場合元のフォームとは別のURLにフォームエラーが表示されます

これは私の最初の本当の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 

どのように私はURLがフォームの/maps/newに残り、まだ中間フォームデータとの誤差を維持するために得ることができますか?

答えて

0

これは機能しますか?

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

...

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

それはありません!どうもありがとうございました! – Twisol

+0

実際のMapオブジェクトを保存しようとすると動作しません。クッキーオーバーフローエラーが発生します。通常の状況下では、クッキーのオーバーフローは素晴らしいでしょうが、...検索は続行されます。 – Twisol

+0

問題は、そのオブジェクトのサイズが2kを超えていることです。セッションを保存するためにp_storeまたはアクティブなレコードに切り替えることができます。 –

関連する問題