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つありますが、それらはすべて、フラッシュとハッキーなリダイレクトベースの回避策を使用しています。これは私が望んでいることではありません。