2

ネストされたフォームに問題があることに気付きましたが、その解決方法がわかりません。私のフォームは正常に機能しています。これは、フォームを機能させる方法に関する問題ではありません。この質問は、「このシナリオで何をすべきか」というものです。

fields_for を介してネストされたフォームを使用すると、うまく機能します。フィールドを追加および削除できるようにJavaScriptを追加すると、すべてがうまく機能します。問題なく追加、保存、削除、保存できます。ただし、ネストされたフォームでオブジェクトを編集し、ネストされたオブジェクトの 1 つを削除する場合 ({'_delete' => true} パラメーターをオブジェクトと共に送信することにより)、[戻る] ボタンを使用して、同じフォームを削除せずにそのフォームを再度保存します。エラーが発生するフィールド。

ブラウザは存在しないはずのフィールドをキャッシュし、Rails はハッシュの 'id' 要素を介して古いオブジェクトを見つけようとしますが、当然のことながら失敗します。とにかくこれを防ぐことができますか?要素がまだそこにあることを確認するために、ハッシュを手動で検査する必要がありますか? ブラウザの更新などを強制する方法はありますか? 御時間ありがとうございます。

4

1 に答える 1

2

Yes and no. Your application has very little control over browser behavior. If the browser sends information to your application that no longer has relevance the best you can do server-side is validate against that and present the user with a clean error message (or silently drop the invalid record ids, but that could be very confusing to the user.)

The alternative is to try and get the browser to stop caching the page in question, you may have seen this before in bank or other sensitive applications where you hit your back button and you're presented with a warning "this page has expired". You could use meta tags or http headers to set the expiry date in the past or use pragma: no-cache.

于 2012-08-27T18:53:06.100 に答える