Railsアプリケーションに次のルートがあります
match '/settings', to: 'Users#edit', as: 'settings'
および対応するコントローラーコード
def edit
@user = current_user
end
def update
correct_user
@user = User.find(params[:id])
if !@user.authenticate(params[:old_password])
flash[:error] = 'Old password did not match'
redirect_to settings_path
elsif @user.update_attributes(params[:user])
flash[:success] = "Settings updated"
redirect_to settings_path
else
render 'edit'
end
end
私の編集ページは現在、パスワード変更ページにすぎません。アクセスする/settingsと、除外したいページが表示されます。私redirect_to settings_pathが、URLが残っているとき/settings、それは私が望む振る舞いです。
私のeditテンプレートには、オブジェクトエラーを処理してページにレンダリングするためのコードがあります。の場合render 'edit、オブジェクトエラーが発生した場合にこのコードがトリガーされます。ただし、ページにリダイレクトすると、コードが表示されません。だから私render 'edit'はエラーを見るために電話する必要があります。
ただし、呼び出すrender 'edit'とURLがに変更されます/users/:id/edit。これはまさに私が望まないことです。/settingsを呼び出した後もURLを残したいのですがrender 'edit'。どうすればこれを達成できますか?
注:私はすでにインターネットのSOやその他の部分を検索しましたが、自分のニーズに合ったものは見つかりませんでした。同様の問題を抱えるSOトピックが1つか2つありますが、それらはすべて、フラッシュとハッキーなリダイレクトベースの回避策を使用しています。これは私が望んでいることではありません。