0
私は比較的単純なウェブサイトで(現在)単一のリソースで作業しています。 GET /maps/new
には新しいマップのデータをPOST /maps
に送信するフォームがあり、完了後にGET /maps/:id
にリダイレクトされます。ここで問題となるのは、検証に失敗すると新しいマップフォームがレンダリングされるため、URLはまだ/maps
です。しかし、/maps/new
にリダイレクトすると、検証エラー(および以前に入力したマップデータ)が失われます。フォーム提出でエラーが発生した場合元のフォームとは別のURLにフォームエラーが表示されます
これは私の最初の本当の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
に残り、まだ中間フォームデータとの誤差を維持するために得ることができますか?
それはありません!どうもありがとうございました! – Twisol
実際のMapオブジェクトを保存しようとすると動作しません。クッキーオーバーフローエラーが発生します。通常の状況下では、クッキーのオーバーフローは素晴らしいでしょうが、...検索は続行されます。 – Twisol
問題は、そのオブジェクトのサイズが2kを超えていることです。セッションを保存するためにp_storeまたはアクティブなレコードに切り替えることができます。 –