次のようなコントローラーがあります。
def new
@title = "Add New Post"
@post = Post.new
end
def create
@title = "Add New Post"
@post = Post.new(params[:post])
if @post.save
flash[:success] = @post.name+" successfully added. Thank you!"
redirect_to @post
else
render 'new'
end
end
問題は、ユーザーが新しい投稿を正常に作成した後、[戻る] ボタンを押してもう一度 [保存] をクリックして何かを変更することを決定した場合、エントリが重複することです。
このようなことを防ぐ最善の方法は何ですか? Railsではcreateアクションは自動的にPOSTリクエストになると思っていたので、ブラウザは「Are you sure you want to resend the data, bla bla bla...」のように言うべきです。
rake routes を実行すると、次のようになります。
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new